web-dev-qa-db-ja.com

busyboxの日付コマンドはフォーマットされた入力日付を受け付けません

Busyboxのdateコマンドを使用して日付を設定したい(BusyBox v1.21.0)。コンピューターを設定するカスタム日付は次の形式です。

Tue, 15 Jan 2019 10:46:13 GMT

私のdateコマンドでできることは、次の文字列を使用して同じ形式で日付を出力することです。

date +"%a, %d %b %Y %T %Z"

上記とまったく同じ形式で日付を返します。しかし、-sオプションを使用して日付を設定すると、これは受け入れられません。

これは例えば失敗します:

date -u +"%a, %d %b %Y %T %Z" -s "Wed, 17 Feb 2010 19:14:32 UTC"
date: invalid date 'Wed, 17 Feb 2010 19:14:32 UTC'

Busyboxコマンドの機能が減っていることは知っていますが、フォーマット文字列を処理して現在の日付を目的の形式で出力できる場合は、それを使用して入力文字列を解釈できるはずです。

3
tzippy

-Dを使用して入力フォーマットを指定し、通常の+...を使用して出力フォーマットを指定し、-dが参照日付を提供して、busyboxの日付を取得してフォーマットを変換できます。時間。例えば、

r='Tue, 15 Jan 2019 09:16:53 GMT'
d=$(busybox date -d "$r" -D "%a, %d %b %Y %T %Z" +'%Y-%m-%d %H:%M:%S')
# d becomes 2019-01-15 09:01:53
busybox date -s "$d"
3
meuh

busybox dateは非常に特定の時間フォーマットのみを受け入れ、任意の時間フォーマットは受け入れません。

$ busybox date --help
[...]
    [-s,--set] TIME Set time to TIME
[...]
Recognized TIME formats:
    hh:mm[:ss]
    [YYYY.]MM.DD-hh:mm[:ss]
    YYYY-MM-DD hh:mm[:ss]
    [[[[[YY]YY]MM]DD]hh]mm[.ss]
    'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead

だから、あなたはそれをdate -s 2010.02.17-19:14:32(または任意の形式)。

2
frostschutz