Sch*_*der 8 command-line bug-reporting date coreutils
如果日期代码表示任何一年 3 月最后一个星期日的 2:00:00AM 到 2:59:59AM,touch -t 会给我“无效的日期格式”错误(我已经检查过 2023,2014,2016,2018 )。核心实用程序中这种奇怪的现象让我大吃一惊。这是一些已知的错误吗?有解决方法吗?
\n例子:
\n$ touch -t 201603270159.59 myfile.txt #1:59AM works\n$ touch -t 202303260200.00 myfile.txt #2:00AM fails\ntouch: invalid date format \xe2\x80\x98202303260200.00\xe2\x80\x99\n$ touch -t 201603270259.59 myfile.txt #2:59AM fails\ntouch: invalid date format \xe2\x80\x98201603270259.59\xe2\x80\x99\n$ touch -t 201603270300.00 myfile.txt #3:00AM works\n$ touch -t 202303270200.00 myfile.txt #2:00AM the next day works\nRun Code Online (Sandbox Code Playgroud)\n(这些内容为 YYYYMMDDHHMM.SS)。
\n我接触了 5000 个文件的集合,这些文件的时间戳可追溯到 12 年前。这是触摸失败的日期时间戳列表。问题日期始终是三月的最后一个星期日
\ntouch -t 201403300248.57 fileA.txt\ntouch -t 201403300251.21 fileB.txt\ntouch -t 201403300253.03 fileC.txt\ntouch -t 201603270252.42 fileD.txt\ntouch -t 201603270234.43 fileE.txt\ntouch -t 201803250223.39 fileF.txt\nRun Code Online (Sandbox Code Playgroud)\n如果我使用 touch -d,该错误仍然存在。例如:
\n$ touch -d "2016-03-27 02:34:43" myfile.txt\ntouch: invalid date format \xe2\x80\x982016-03-27 02:34:43\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n我使用的是 Ubuntu 22.04.03。这种情况发生在 bash、csh、sh shell 上。
\nWin*_*nix 11
在夏令时过渡期间,02:00 到 02:59 的时间不存在。
Linux/Ubuntu 使用 UTC 内部跟踪时间,UTC 不遵守夏令时,并且运行良好。转换为当地时间时,02:00 和 02:59 之间会有一个空档。