我已经看到,为了将纪元转换为日期时间,可以执行以下操作:
date -d @1346338800 +'%Y%m%d%H%M%S'
我如何在 Linux 中做相反的事情?IE 将 20191027163020 转换为纪元值?是否可以不使用 Python 或其他编程语言脚本?
我已经看到,为了将纪元转换为日期时间,可以执行以下操作:
date -d @1346338800 +'%Y%m%d%H%M%S'
我如何在 Linux 中做相反的事情?IE 将 20191027163020 转换为纪元值?是否可以不使用 Python 或其他编程语言脚本?
Linux
只是一个内核,它与 Q&A 无关。随着busybox的实现
date
(GNUdate
也在考虑实现一个类似的选项;GNU和busyboxdate
是在使用Linux作为内核的系统上常见的两种实现,我知道它们支持你的date -d @xxx
语法)。使用 ast-open 实现
date
(就像date
作为 ast-open 的一部分构建的 ksh93 的内置函数):strftime
内置zsh
:_使用当前版本的 GNU
date
,您可以将其转换为它支持-d
/的格式-f
(如2019-10-27T16:30:20
):请注意,它们都在当地时间工作。由于时区偏移不包含在您的格式中,因此它是模棱两可的。
例如,在英国大陆,20191027011200 可以是 1572138720 或 1572135120,因为时钟在切换到冬季时间后以一小时的间隔显示两次 01:12:00。
您可能希望始终使用 UTC 时间来避免此类问题(例如,通过将
$TZ
环境变量设置UTC0
为)。通常,date 命令(具有
-d
选项的实现)可以将某些ISO8601 格式的日期字符串转换为纪元数。但是,如果您想要一个通用格式的答案,您需要声明写入日期字符串的特定格式。这可以通过
-f
选项*BSD date
(无 -d 选项)、-D
选项、ast-openbusybox date
选项-p
或 ksh93 中的变量 DATEMSK 来完成。在 GNU 日期中,您需要手动进行格式化: