日が始まる日時の予約語はありますか?

日が始まる日時の予約語はありますか?

man date予約語は表示されませんが、「今」や「今日」などがあります。

一日の始まり(00:00:00)を明確に出力する方法があるかどうか疑問に思います。

date -u -d "$(date +'%F')"どんな場合でも十分ですか?少し愚かなようです。

ベストアンサー1

date -d 00:00または、date -d 00:00:00GNU、ast-open、Toysbox、busyboxを使用してくださいdate

date -d 0GNUでも動作しますdate

$ date -d 00:00
Tue  4 Oct 00:00:00 BST 2022

BSDの使用date:

$ date -jf %H%M%S 000000
Mon Oct  4 00:00:00 BST 2022

-j-f-d標準オプションではありませんdate

POSIXdateシステムクロックの設定(XSIオプションの下)以外に、今以外の入力日を指定するための規定はありません。

次のことができます。

$ date '+%a %e 00:00:00 %Z %Y'
Tue  4 00:00:00 BST 2022

BSTただし、時計が冬季に変わる日の区間を運行すると、区間が間違っている可能性があります。

ksh93zsh入力日付の解析をデフォルトでサポートします。

  • クッシュ 93

    $ printf '%(%c [%s epoch time])T\n' 00:00
    Tue Oct  4 00:00:00 2022 [1664838000 epoch time]
    

    (ksh93からbashコピーしましたが、%(format)Tepoch秒以外の入力日は指定できません。)

    dateksh93はast-open組み込み機能を使用して構築することもできます。

  • 扱いにくい

    $ zmodload zsh/datetime
    $ strftime -s today %F
    $ strftime -rs start %F $today
    $ strftime '%c [%s epoch time]' $start
    Tue 04 Oct 2022 00:00:00 BST [1664838000 epoch time]
    

    または、プロンプト拡張を使用して今日の日付を取得します(%ここにパラメータ拡張フラグを渡す)。

    $ zmodload zsh/datetime
    $ strftime -rs start %F ${(%):-%D{%F}}
    $ strftime '%c [%s epoch time]' $start
    Tue 04 Oct 2022 00:00:00 BST [1664838000 epoch time]
    

次の点に注意してください。

date -u -d "$(date +'%F')"

今日の日付を受け入れてください。あなたのタイムゾーンはYYYY-MM-DD形式ですが、date00:00:00に時間を求めるメッセージが表示されます。UTCその日には、あなたのタイムゾーンが現在UTCと一致しない限りあなたの空。

英国本土は依然として夏時間(UTCより1時間早い)を実施しています。

$ date -u -d "$(date +'%F')" +%s
1664841600
$ date -d 00:00 +%s
1664838000

おすすめ記事