Date
您如何為迄今為止的輸入指定格式?
給定格式無法辨識的日期和時間
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