Gnu AWK提供了内置函数
strftime()
可以将时间戳1359210984
转换为Sat 26. Jan 15:36:24 CET 2013
。 我找不到这样做的function:
seconds = timefromdate("Sat 26. Jan 15:36:24 CET 2013", "%a %d. %b %H:%M:%S CET %Y")
要么
seconds = timefromdate("2013-01-26 15:36:24", "%Y-%m-%d %H:%M:%S")
然后seconds
是1359210984
。
所以,datestring应该可以通过格式模式来转换。
我只想在gawk中做这个。
我只想在gawk中进行date转换,以便进一步处理stream。
我澄清了我的问题。 在“将这样做”的代码示例中,这是有点草率的。
你正在寻找的函数被称为mktime()
。 您应该使用gensub()
函数将gensub()
操作为mktime()
可以读取的格式。
要格式化第二个例子,请考虑:
BEGIN { t = "2013-01-26 15:36:24" f = "\\1 \\2 \\3 \\4 \\5 \\6" s = mktime(gensub(/(....)-(..)-(..) (..):(..):(..)/, f, "", t)) print s }
在我的机器上的结果:
1359178584
要格式化第一个例子,请考虑:
BEGIN { t = "Sat 26. Jan 15:36:24 CET 2013" gsub(/\.|:/, FS, t) split(t,a) Y = a[8] M = convert(a[3]) D = a[2] h = a[4] m = a[5] s = a[6] x = mktime(sprintf("%d %d %d %d %d %d", Y, M, D, h, m, s)) print x } function convert(month) { return(((index("JanFebMarAprMayJunJulAugSepOctNovDec", month) - 1) / 3) + 1) }
在我的机器上的结果:
1359178584
有关更多信息,请参阅手册 ,特别是时间函数和字符串函数 。 HTH。