在 awk 中,有没有办法将时间格式从“2010-10-08 00:00:01”转换为 1286467201
,如使用命令“date”
$ date +%s -d '2010-10-08 00:00 :01'
1286467201
问问题
2039 次
1 回答
0
GNU awk 有一个 mktime 函数可以完成这项工作。但是,了解时区至关重要。字符串“2010-10-08 00:00:01”不包含足够的信息来定义特定时间。如果您假设它是 UTC,您可以执行以下操作:
$ echo 2010-10-08 00:00:01 | \
TZ=UTC gawk '{ tstr=$1" "$2; gsub(/[\-:]/, " ", tstr); print mktime(tstr); }'
1286496001
如果您不指定 TZ 变量,您最终会得到服务器的时区(无论如何应该是 UTC,但是很多人在服务器上使用本地时间,所以这不是一个安全的假设)。
您可以通过稍微更改 date 命令从它获取 UTC 输出:
$ date +%s -u -d '2010-10-08 00:00:01'
于 2010-10-16T15:31:30.570 回答