将日期时间转换为另一种日期时间格式

将日期时间转换为另一种日期时间格式

我有一个文本文件,其中包含许多以下格式的日期条目:

YYYY/MM/DD HH:MM:SS.SSS AM\PM 如何将其转换为以下格式?

YYYY-MM-DD HH:MM:SS.SSS(24 小时格式)此文件包含许多日期条目,因此它应该更改所有条目的日期格式...

谢谢

答案1

https://dotnetfiddle.net/ksvLh3

上述脚本处理 DATETIME_INPUT 字符串,并根据您请求的更改将其处理到输出窗口中。

要使用脚本:

  1. 打开上面的链接。
  2. 将源日期时间输入粘贴到 DATETIME_INPUT 常量中的现有数据上。
  3. 页面应自动在下方窗口中生成输出。如果没有,请单击运行按钮
  4. 将下方窗口中的结果复制/粘贴到目标文件中。

注意:我不确定此脚本在处理大量输入集时会如何执行。如有必要,请指定其他要求(输入大小、需要运行此过程的频率、是否需要自动运行或一次性运行等)。

在此处输入图片描述

答案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

相关内容