我正在尝试将文本文件中包含 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"