Date

一天的開始是否有日期時間的保留字?

  • October 4, 2022

man date不會顯示任何保留字,但它們有“現在”或“今天”等。

我想知道是否有任何明確的方法可以列印當天的開始(00:00:00)。

date -u -d "$(date +'%F')"在任何情況下都夠用嗎?看起來有點傻。

date -d 00:00date -d 00:00:00使用date.

date -d 0也適用於 GNU 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

除了設置系統時鐘(在 XSI 選項下)之外, POSIXdate沒有規定除現在以外的輸入日期。

你可以這樣做:

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

但是,BST如果您在時鐘從/到冬季時間更改的那一天執行該部分,則該部分最終可能會出錯。

ksh93zsh內置支持解析輸入日期:

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

(從 ksh93bash複製但不能指定除紀元秒以外的輸入日期)。%(format)T

ksh93 也可以使用內置的 ast-open 建構date

  • zsh
$ 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 格式在您的時區獲取今天的日期,但隨後要求date您提供當天 00:00:00 UTC的時間,除非您所在的時區目前恰好與 UTC 一致,否則不會成為一天的開始。

在仍處於夏令時的英國大陸這裡(比世界標準時間早一小時):

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

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