awk需要时代逻辑进行数据转换

栈0114106

在excel中,当我输入单元格A1 = 1/1/1970和A2 = today()时,A2解析为2020年4月17日。当我用A1减去A2时,得到18369,这是我的数据转换逻辑的时代。

我正在尝试在awk中模拟相同的功能,但未获取整数

$ awk ' BEGIN { t=strftime("%F",systime()); print t; gsub("-"," ",t); t2=mktime(t " 0 0 0" ); print t2/(24*60*60) } '
2020-04-17
18368.8
$

这个awk的翻译正确吗?我的awk代码差异0.2的原因是什么?如何解决。

阿努巴瓦

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

由于当前本地时区和UTC之间的时区偏移,您会看到这种差异。

在最近的gnu awk版本中,你可以使用这个额外的传递utc-flagmktime函数:

awk 'BEGIN {t=strftime("%F",systime()); print t;
     gsub("-"," ",t); t2=mktime(t " 0 0 0", 1); print t2/(24*60*60)}'

但是,如果您使用的是较早的awk版本,请使用以下解决方法在UTC以下位置获取时间计算

TZ=UTC awk 'BEGIN {t=strftime("%F",systime()); print t;
gsub("-"," ",t); t2=mktime(t " 0 0 0"); print t2/(24*60*60) } '

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章