在awk中,有没有办法将时间格式从“2010-10-08 00:00:01”转换为1286467201
使用命令“date”
$ date +%s -d'2010-10-08 00:00:01'
1286467201
答案 0 :(得分: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,但是很多人在服务器上使用本地时间,所以这不是一个安全的假设。)
您可以通过稍微更改日期命令来获取UTC输出:
$ date +%s -u -d '2010-10-08 00:00:01'