我有一个文本文件,其中包含许多以下格式的日期条目:
YYYY/MM/DD HH:MM:SS.SSS AM\PM 如何将其转换为以下格式?
YYYY-MM-DD HH:MM:SS.SSS(24 小时格式)此文件包含许多日期条目,因此它应该更改所有条目的日期格式...
谢谢
答案1
https://dotnetfiddle.net/ksvLh3
上述脚本处理 DATETIME_INPUT 字符串,并根据您请求的更改将其处理到输出窗口中。
要使用脚本:
- 打开上面的链接。
- 将源日期时间输入粘贴到 DATETIME_INPUT 常量中的现有数据上。
- 页面应自动在下方窗口中生成输出。如果没有,请单击运行按钮
- 将下方窗口中的结果复制/粘贴到目标文件中。
注意:我不确定此脚本在处理大量输入集时会如何执行。如有必要,请指定其他要求(输入大小、需要运行此过程的频率、是否需要自动运行或一次性运行等)。
答案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