Gnu AWK提供内置功能
strftime()
可以将1359210984
之类的时间戳转换为Sat 26. Jan 15:36:24 CET 2013
。
我找不到能做到这一点的功能:
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
。
因此,日期字符串应该可以通过格式模式转换。
我只想在gawk中这样做。
我想仅在gawk中转换日期以进一步处理流。
我澄清了我的问题。在“会做这个”代码示例中有点草率。
答案 0 :(得分:1)
您正在寻找的功能称为mktime()
。您应该使用gensub()
函数将datespec操作为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
有关详细信息,请参阅manual,具体为time functions和string functions。 HTH。
答案 1 :(得分:0)
您可以从日期时间使用 python 方法 strptime:
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
有关更多信息,请参阅此处: https://www.programiz.com/python-programming/datetime/strptime