Command-Line
如何將日期時間轉換為紀元?
我已經看到,為了將紀元轉換為日期時間,可以執行以下操作:
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
語法)。$ 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
為)。