将bash中的日期转换回iso



我们创建了这样的日期格式:releaseVersion=$(date +%y%m%d%H%M)
结果是2105231450
如何将其转换回iso格式
我正在尝试date -d '2105031452' +'%y%m%d%H%M',但得到了date: invalid date ‘2105031452’
最终格式应该是2021-05-23 14:50
我该怎么做?

由于这是bash,另一个选项是对子字符串索引使用参数扩展,例如

r=2105231450; isodate="20${r:0:2}-${r:2:2}-${r:4:2} ${r:6:2}:${r:8:2}:00"

然后:

$ date -d "$isodate"
Sun May 23 14:50:00 CDT 2021

假设年份发生在本世纪,我会使用字符串操作:

$ echo '2105231450' | sed -E 's/(..)(..)(..)(..)(..)/201-2-3 4:5/'
2021-05-23 14:50

在MacOS上,

$ date -j -f %y%m%d%H%M 2105311209  +%Y-%m-%d %H:%M
2021-05-31 12:09

请注意,-f用于指定输入格式。

$ time=2105231450
$ date -d "${time:0:6} ${time:6:4}"
Sun 23 May 14:50:00 CEST 2021
$ date -d "${time:0:6} ${time:6:4}" +"%Y-%m-%d %H:%M"
2021-05-23 14:50
日期是一个字符串,可能是空的,包含许多用空格分隔的项目。当没有歧义出现时,可以省略空白。

https://www.gnu.org/software/coreutils/manual/html_node/General-date-syntax.html#General-日期语法

d0=";2105031452";;日期"+%Y-%m-%d%H:%m"-d"${d0:0:6}${d0:7}";

相关内容

  • 没有找到相关文章

最新更新