【问题标题】:How to convert time format from "2010-10-08 00:00:01" to "1286467201" in awk如何在awk中将时间格式从“2010-10-08 00:00:01”转换为“1286467201”
【发布时间】:2010-10-16 14:57:33
【问题描述】:

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

【问题讨论】:

    标签: shell gawk


    【解决方案1】:

    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'
    

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多