我可以使用RegEx将12小时格式的美国日期替换为24小时格式的英国日期吗?

7gcisfzg  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(96)

我有一个.dat文本文件,该文件是从计算机上的基于Web的平台导出的,日期和时间格式设置为m/d/yyyy HH:MM AM/PM。(所以1999年5月1日上午9时为1999年5月1日上午9时)
我需要这些日期是在英国格式和时间在24小时格式(日/月/年hh:mm)-如01/05/1999 09:00。
我正在使用notepad++进行编辑,可以使用以下命令查找和替换日期:
第一步(月份填充):
查找:,([0-9])/+([0-9]+)/+([0-9]+)替换:,0\1/\2/\3
第2步(日期填充):
查找:([0-9]+)/+([0-9])/+([0-9]+)替换:\1/0\2/\3
步骤3(US转换):
查找:([0-9]+)/+([0-9]+)/+([0-9]+)替换:\2/\1/\3
有谁能帮我把时间也换算一下吗?

xoshrz7s

xoshrz7s1#

要将PM小时数转换为24小时,您需要执行(算术)加法。
正则表达式是错误的工具。除非你愿意用“13”替换“01 PM”,用“14”替换“02 PM”,用“15”替换“03 PM”,等等,所有这些都是单独的替换操作。
但是如果你只想在几个操作中完成它,那么你需要一个脚本/编程语言。
例如,下面的代码片段将一次性完成转换。在此处运行代码片段,将您的输入粘贴到左侧框中,然后在右侧框中查找结果。

const [input, output] = document.querySelectorAll("textarea, button");

(input.oninput = () => output.value = input.value.replace(
    /(\d+)\/(\d+)\/(\d{4}) (\d+):(\d+) ([AP])M/g,
    (_, M, d, y, h, m, p) => `${d}/${M}/${y} ${(h%12)+12*(p>'A')}:${m}`
                            .replace(/\b\d\b/g, "0$&")
))();
textarea { width: 50%; height: 98%; box-sizing: border-box; margin: 0}
body { height: 100vh; margin: 0 }
<textarea>
5/1/1999 12:05 AM
12/31/2000 9:18 AM
2/28/2001 4:56 PM
4/9/2023 12:19 PM
5/24/2019 7:23 PM
</textarea><textarea readonly></textarea>

相关问题