如何在awk中将时间格式从“2010-10-08 00:00:01”转换为“1286467201”

时间:2010-10-16 14:57:33

标签: shell gawk

在awk中,有没有办法将时间格式从“2010-10-08 00:00:01”转换为1286467201
使用命令“date”
$ date +%s -d'2010-10-08 00:00:01'
1286467201

1 个答案:

答案 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'
相关问题