使用较旧的GNU coreutils解析ISO日期

时间:2017-10-06 08:23:40

标签: bash shell date unix

我正在解析如下日期:

date +'%Y-%m-%dT%H:%M:%SZ' -d '2017-10-06T13:41:06Z'

它适用于日期版本(GNU coreutils)8.21 ,但它不适用于日期版本(GNU coreutils)8.4 。给出以下错误:

  

日期:无效日期`2017-10-06T13:41:06Z'

有没有办法在(GNU coreutils)8.4 中解析这个日期?

1 个答案:

答案 0 :(得分:2)

您正在使用的功能是added in GNU coreutils 8.13,因此,如果您使用的是旧版本,则该功能无法使用。

首先在T分割时间。这适用于旧版本。

# Given an ISO date $iso_date with the time in split format HH:MM:SS...
date_part=${iso_date%%T*}
time_part=${iso_date#*T}
date -d "$date_part $time_part"

如果您还需要支持不带标点符号的精简格式,请参阅a similar question on Unix Stack Exchange