我已经看到,为了将纪元转换为日期时间,可以执行以下操作:
date -d @1346338800 +'%Y%m%d%H%M%S'
在Linux中我该如何做相反的事情?IE将20191027163020转换为纪元值?是否可以不用Python或其他编程语言脚本来完成?
Linux
只是一个内核,与该问答无关。
使用busybox实现date
(GNUdate
也正在考虑实现类似的选项; GNU和busyboxdate
是在以Linux为内核的系统上常见的两种实现,我知道它们支持您的date -d @xxx
语法)。
$ date -D %Y%m%d%H%M%S -d 20191027163020 +%s
1572193820
使用ast-open的实现date
(例如,date
作为ast-open的一部分构建时的ksh93内置):
$ date -p %Y%m%d%H%M%S -d 20191027163020 +%s
1572193820
随着strftime
中内置zsh
:
$ zmodload zsh/datetime
$ strftime -r %Y%m%d%H%M%S 20191027163020
1572193820
使用当前版本的GNU date
,您可以将其转换为支持其-d
/的格式-f
(例如2019-10-27T16:30:20
):
t=20191027163020
printf '%s%s-%s-%sT%s:%s:%s\n' $(printf '%s\n' "$t" | fold -w2) |
date -f - +%s
请注意,它们都在当地时间工作。由于您的格式中不包含时区偏移量,因此它是模棱两可的。
例如,在英国大陆,此处的20191027011200可以是1572138720或1572135120,因为时钟在切换到冬季时间后每隔一小时显示两次01:12:00。
$ date -d @1572138720 +%Y%m%d%H%M%S
20191027011200
$ date -d @1572135120 +%Y%m%d%H%M%S
20191027011200
您可能希望始终使用UTC时间来避免此类问题(例如,通过将$TZ
环境变量设置UTC0
为)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句