Bash:当我尝试将此日期格式转换为纪元时,日期返回"invalid date"



我想将17/08/2021 23:42:32转换为epoch,但它会抛出错误

root@OpenWrt:~# var="17/08/2021 23:42:32"
root@OpenWrt:~# date -d "${var}" +"%s"
date: invalid date _17/08/2021 23:42:32_

如何修复?

Linux在某些地区支持%d/%m/%Y格式的输出,但不支持输入。显示为

LC_ALL="es_CR" locale -c d_fmt


% d/Y % m/%

输入

失败
LC_ALL="es_CR" date -d '17/08/2021 21:45'

日期:无效日期'17/08/2021 21:45'

对于-d开关,支持US格式,所以您的选择是反转%d/%m

var=$(echo '17/08/2021 21:45' | sed -re 's@([0-9]{2,2})/([0-9]{2,2})/([^/]+)@2/1/3@')
date -d "${var}" +"%s"

1629247500

或者

IFS='/' read -r -a array <<< "17/08/2021 21:45"
date -d "${array[1]}/${array[0]}/${array[2]}" '+%s'

1629247500

最新更新