Linux
如何僅使用 Busybox 工具將具有命名月份的日期轉換為 unix 時間戳?
我在一個幾乎只能訪問busybox工具的環境中工作,並嘗試
Mon Jan 1 23:59:59 2018 GMT
在shell腳本中將格式的日期轉換為unix時間戳。我無法更改正在解析的輸入時間的格式。似乎busybox date
無法理解這種日期格式,或任何其他帶有命名月份的格式。我有一個非常醜陋的腳本可以做到這一點,但有人知道更好的嗎?編輯:該
date -D
選項對我不起作用,我明白了date: invalid option -- 'D' BusyBox v1.24.1 (2018-01-11 16:07:45 PST) multi-call binary. Usage: date [OPTIONS] [+FMT] [TIME]`
busybox
date
2完全有能力在一些幫助1下解析給定字元串中的日期(GMT 時區除外)。$ gdate='Mon Jan 1 23:59:59 2018 GMT' $ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' Mon Jan 1 23:59:59 GMT 2018
幫助是通過
-D
選項給出的:源格式的描述。要獲得 UNIX 時間戳,只需添加預期的輸出格式
+'%s'
:$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' +'%s' 1514851199
1busybox具有 GNU命令
的大部分功能,而 GNU命令卻沒有:選項。獲取busybox幫助如下:
date``date``date``-D
$ busybox date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) 多呼叫二進製文件。
用法:日期
$$ OPTIONS $$ $$ +FMT $$ $$ TIME $$ 顯示時間(使用+FMT),或設置時間
[-s,--set] TIME Set time to TIME -u,--utc Work in UTC (don't convert to local time) -R,--rfc-2822 Output RFC-2822 compliant date string -I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision -r,--reference FILE Display last modification time of FILE -d,--date TIME Display TIME, not 'now' -D FMT Use FMT for -d TIME conversion
注意
-D FMT
選項。2
請注意,您可以通過
date
兩種方式呼叫busybox:$ busybox date
或者,如果
busybox
同名的連結date
已安裝在正確的PATH
目錄中:$ date
要驗證,只需詢問
--version
或--help
找出您安裝的日期。使用 GNU
date
:$ date --version date (GNU coreutils) 8.28
或(忙箱
date
):$ date --help BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary. … …