Date
一天的開始是否有日期時間的保留字?
man date
不會顯示任何保留字,但它們有“現在”或“今天”等。我想知道是否有任何明確的方法可以列印當天的開始(00:00:00)。
date -u -d "$(date +'%F')"
在任何情況下都夠用嗎?看起來有點傻。
date -d 00:00
或date -d 00:00:00
使用date
.
date -d 0
也適用於 GNUdate
。$ 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 選項下)之外, POSIX
date
沒有規定除現在以外的輸入日期。你可以這樣做:
$ date '+%a %e 00:00:00 %Z %Y' Tue 4 00:00:00 BST 2022
但是,
BST
如果您在時鐘從/到冬季時間更改的那一天執行該部分,則該部分最終可能會出錯。
ksh93
並zsh
內置支持解析輸入日期:
- ksh93
$ printf '%(%c [%s epoch time])T\n' 00:00 Tue Oct 4 00:00:00 2022 [1664838000 epoch time]
(從 ksh93
bash
複製但不能指定除紀元秒以外的輸入日期)。%(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