Lunartist Asked: 2022-10-04 20:33:27 +0800 CST2022-10-04 20:33:27 +0800 CST 2022-10-04 20:33:27 +0800 CST 一天的开始是否有日期时间的保留字? 772 man date不会显示任何保留字,但它们有“现在”或“今天”等。 我想知道是否有任何明确的方法可以打印当天的开始(00:00:00)。 date -u -d "$(date +'%F')"在任何情况下都够用吗?看起来有点傻。 date 1 个回答 Voted Best Answer Stéphane Chazelas 2022-10-04T21:22:18+08:002022-10-04T21:22:18+08:00 date -d 00:00或date -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如果您在时钟从/到冬季时间更改的那一天运行该部分,则该部分最终可能会出错。 ksh93并zsh内置支持解析输入日期: 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
date -d 00:00
或date -d 00:00:00
使用date
.date -d 0
也适用于 GNUdate
。使用 BSD
date
:-j
,-f
,都不-d
是 的标准选项date
。除了设置系统时钟(在 XSI 选项下)之外, POSIX
date
没有规定除现在以外的输入日期。你可以这样做:
但是,
BST
如果您在时钟从/到冬季时间更改的那一天运行该部分,则该部分最终可能会出错。ksh93
并zsh
内置支持解析输入日期:ksh93
(从 ksh93
bash
复制但不能指定除纪元秒以外的输入日期)。%(format)T
ksh93 也可以使用内置的 ast-open 构建
date
。zsh
或者使用提示扩展获取今天的日期(这里通过
%
参数扩展标志):请注意,您的:
以 YYYY-MM-DD 格式在您的时区获取今天的日期,但随后要求
date
您提供当天 00:00:00 UTC的时间,除非您所在的时区当前恰好与 UTC 一致,否则不会成为你一天的开始。在仍处于夏令时的英国大陆这里(比世界标准时间早一小时):