2016-06-29 2 views
2

ファイル名に日付があるログをいくつか開く必要があります。だから私は特定の日付までにすべてのファイルを開こうとしています。DateTimeのstrftimeは、年末付近の日付から日数を差し引くと、間違った年になるのはなぜですか?

私は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 

ですが、なぜでしょうか?

答えて

7

strftimeコード%GISO 8601 week number calendarに従います。 12月末の日数は次のISO年で、1月初めの日数は前回の日数になる可能性があります。代わりにを使用してください。

+0

お元気です...ありがとうございます – cterra

関連する問題