Преобразование даты и времени в другой формат даты и времени
У меня есть текстовый файл, содержащий много записей в следующем формате:
ГГГГ / ММ / ДД ЧЧ: ММ: СС.ССС AM\PM Как бы вы преобразовали это в следующий формат?
ГГГГ-ММ-ДД ЧЧ: ММ: СС.ССС (24-часовой формат) Этот файл содержит много записей даты, поэтому он должен изменить формат даты всех записей...
Спасибо
2 ответа
При условии, что время даты в исходном файле находится в фиксированной позиции, как в этом примере в начале:
> type datetime.txt
2016/12/12 05:16:41.898 PM Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed d
2017/01/16 11:05:05.897 AM a aliquyam erat, sed diam voluptua. At vero eos et accusam et
2017/01/25 02:07:07.457 PM no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
2017/05/17 05:49:08.140 PM m nonumy eirmod tempor invidunt ut labore et dolore magna aliq
2017/06/10 04:40:56.529 AM sto duo dolores et ea rebum. Stet clita kasd gubergren, no sea
Пакетный файл может анализировать элементы для переменных и проверять AM / PM, а в случае PM добавить 12 к часу и сложить с измененными разделителями (удаляя AM/PM).
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /F "usebackq Tokens=1-8* Delims=/:. " %%A in (
"datetime.txt"
) do If /i "%%H" equ "AM" (
Echo %%A-%%B-%%C %%D:%%E:%%F.%%G %%I
) Else If /i "%%H" equ "PM" (
Set /A Hr=1%%D + 12
Echo %%A-%%B-%%C !Hr:~-2!:%%E:%%F.%%G %%I
) Else Echo no AM/PM found
Пример вывода:
> SU_1229322.cmd
2016-12-12 17:16:41.898 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed d
2017-01-16 11:05:05.897 a aliquyam erat, sed diam voluptua. At vero eos et accusam et
2017-01-25 14:07:07.457 no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
2017-05-17 17:49:08.140 m nonumy eirmod tempor invidunt ut labore et dolore magna aliq
2017-06-10 04:40:56.529 sto duo dolores et ea rebum. Stet clita kasd gubergren, no sea
https://dotnetfiddle.net/ksvLh3
Приведенный выше скрипт обрабатывает строку DATETIME_INPUT и обрабатывает ее в окне вывода с изменением, которое вы запросили.
Чтобы использовать скрипт:
- откройте ссылку выше.
- вставьте исходные данные даты и времени поверх существующих данных в константе DATETIME_INPUT.
- страница должна автоматически генерировать вывод в нижнем окне. если нет, нажмите кнопку "Выполнить"
- скопируйте / вставьте результаты из нижнего окна в файл назначения.
Примечание: я не уверен, как этот скрипт будет работать с большими входными наборами. При необходимости укажите дополнительные требования (размер ввода, как часто вам нужно будет запускать этот процесс, нужно ли его автоматизировать или один раз и т. Д.)