Date

您如何為迄今為止的輸入指定格式?

  • February 11, 2022

給定格式無法辨識的日期和時間date,我如何才能date辨識日期和時間?

例如:

$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep  9 23:58:46 MDT 2012

--magic-option存在嗎?如果沒有,是否有更優雅的方法來解決這個問題,而不是使用sed將輸入轉換為格式正確的日期字元串?

POSIX 和 GNU 日期都沒有--magic-option. FreeBSD 呼叫它-f(使用類似於date’ 輸出格式說明符的語法,而不是您建議的那個)。

您的日期非常接近被 GNU 日期辨識:只需用空格替換將日期與時間分隔的冒號。

date -d "$(echo "09SEP2012:23:58:46" | sed 's/:/ /')"

我寫了一堆工具(dateutils),它們以一種對腳本更友好的方式處理日期和時間。您的神奇選擇有--input-format|-i,例如:

dconv -i '%d%b%Y:%H:%M:%S' "09SEP2012:23:58:46"
=>
 2012-09-09T23:58:46

雖然dconv不直接支持date’ 的輸出格式(它不授予TZ或環境中的任何內容),但dateutilsstrptime中有一個工具支持格式說明符。%Z

引用自:https://unix.stackexchange.com/questions/56824