gpt4 book ai didi

perl - 当我从临近年底的日期中减去天数时,为什么 DateTime strptime 会给出错误的年份?

转载 作者:行者123 更新时间:2023-12-02 07:22:55 27 4
gpt4 key购买 nike

我必须打开一些文件名中包含日期的日志。所以我试图打开某个日期之前的所有文件。

我正在使用 DateTime .我这样做:

do 
{
$datechoice = $today->strftime('%G%m%d'); #YearMonthDay
$date_for_graph = $today->strftime('%d/%m/%G');
# unshift @Log_Period_Time, "$date_for_graph";
print $datechoice." - ".$date_for_graph."<br>";
$today->subtract(days => 1);
} while($datechoice > 20141107);

但是对于接近年底的日期,输出显示错误的年份:

20160109 - 09/01/2016
20160108 - 08/01/2016
20160107 - 07/01/2016
20160106 - 06/01/2016
20160105 - 05/01/2016
20160104 - 04/01/2016
20150103 - 03/01/2015 <-- Should be 2016
20150102 - 02/01/2015
20150101 - 01/01/2015
20151231 - 31/12/2015
20151230 - 30/12/2015
20151229 - 29/12/2015
...
20150103 - 03/01/2015
20150102 - 02/01/2015
20150101 - 01/01/2015
20151231 - 31/12/2015
20151230 - 30/12/2015
20151229 - 29/12/2015
20141228 - 28/12/2014 <-- Should be 2015
20141227 - 27/12/2014
20141226 - 26/12/2014

为什么会这样?

最佳答案

使用%Y,而不是%G,除非您明确表示要根据ISO 8601 week number calendar 显示日期.

(在 ISO 日历中,每年都是从星期一到星期日运行的整数周。因此,只要 1 月 1 日不是星期一,它的一侧就会有最多三天属于“错误”例如,ISO 2021 年从 1 月 4 日星期一开始;1 月 1 日至 3 日是 2020 年的最后一周。反过来,ISO 2026 年将从 2025 年 12 月 29 日星期一开始,因此那个 12 月的最后 3 天已经是下一个 ISO 年的第一周。)

关于perl - 当我从临近年底的日期中减去天数时,为什么 DateTime strptime 会给出错误的年份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com