如何更改日期格式 yyyy-mm-dd

如何更改日期格式 yyyy-mm-dd

我想将日期从2017-11-25 23:35:08( yyyy-mm-dd hh:mm:ss) 更改为:

Sat Nov 25 23:35:08 IST 2017

我尝试过echo 2017-11-25 | gawk '{print strftime("%c", $4)}',但它不起作用。

答案1

使用 GNU date

$ date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 CET 2017

结果将采用当地时区(以及当地区域设置)。

要显式请求 IST 时区,请使用,例如

$ TZ=Asia/Calcutta date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 IST 2017

为了确保您也获得 POSIX/C 语言环境的格式:

$ LC_TIME=C TZ=Asia/Calcutta date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 IST 2017

请注意,strftime()GNU awk(和mawk)中的函数不采用字符串作为其第二个参数,而是采用 Unix 时间戳。您必须使用将时间转换为 Unix 时间戳mktime(),然后使用 转换为所需的格式strftime()。调用mktime()需要首先将输入分解为单独的年、月、日等。

此外,$4在您调用该函数时,将为空(输入中没有第四个字段)。

相关内容