字符串“Fpr Dec 16 16:12:24 CST 2016”到shell的时间戳

时间:2016-12-16 08:24:50

标签: shell

我有一些字符串(从文件中读取),例如“F16 Dec 16 16:12:24 CST 2016”,以及如何通过shell将此字符串转换为时间戳?

  

我需要时间戳,例如Fri Dec 16 16:27:28 CST 2016 - > 1481876854

shell cmd date打印Fri Dec 16 16:12:24 CST 2016,所以我认为date有一些方法可以做到。

但我找不到解决方案,有人可以帮助我吗?

macos 10.12.2

enter image description here

2 个答案:

答案 0 :(得分:2)

对于FreeBSD date,您可以使用格式为-j -f的{​​{1}}标记

"%a %b %d %T %Z %Y"

如果您使用基于date -j -f "%a %b %d %T %Z %Y" "Fri Dec 16 16:27:28 CST 2016" +"%s" 1481876854 的{​​{1}}命令,则可以使用GNU标记转换为date时间戳,即

EPOCH

答案 1 :(得分:1)

根据您的规范(时间格式),如果date不起作用或不可用,那么繁重的工具

echo "Fri Dec 16 16:27:28 CST 2016" \
 | gawk -F '[[:blank:]:]' 'BEGIN{
        split( "Jan Feb Mar Apr May Jun Jul Agu Sep Oct Nov Dec", Temp, " ")
        for (t in Temp) Month[ Temp[t]] = t < 10 ? "0" t : t
        }
    {
        # mktime assume ISO C time format: "YYYY MM DD HH MM SS [DST]"
        ISOTime = sprintf( "%d %s %s %s %s %s\n", $8, Month[ $2], $3 < 10 ? "0" $3 : $3, $4, $5, $6)
        print mktime( ISOTime)
    }
    '