如何在 date -d UNIX 命令中读取 dd/mm/yyyy 日期字符串?

如何在 date -d UNIX 命令中读取 dd/mm/yyyy 日期字符串?

我正在尝试将文本文件中包含 dd/mm/yyyy hh:mm:ss 格式的日期的一列动态转换为 yy-mm-dd hh:mm:ss。以下命令有效,但按照我的需要以 yy-dd-mm 格式给出输出,而不是 yy-mm-dd 格式。

echo $(date -d "8/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")

输出:

18-08-11 06:20:57

此外,这不适用于大于 12 的日期,因为它将第一位数字视为月份而不是日期,如下所示:

echo $(date -d "28/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")

输出:

date: invalid date ‘28/11/2018 06:20:57 AM’

有什么办法让它发挥作用吗?

答案1

您可能想先对其进行预处理。我最好的镜头是sed

echo "28/11/2018 06:20:57 PM" | sed -E "s/([0-9]+)\/([0-9]+)\/([0-9]+) ([0-9]+):([0-9]+):([0-9]+) ([APM]{2})/\3\/\2\/\1 \4:\5:\6 \7/g" | xargs -I II date -d II "+%y-%m-%d %H:%M:%S"

相关内容