我想将日期从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
在您调用该函数时,将为空(输入中没有第四个字段)。