kazeburo/File-RotateLogs — pull request #1 by masasuzu (2013-05-31 03:51:39+00:00)
Title: fix log rotation at incorrect time.

rotattiontimeを24時間に設定して、タイムゾーンがUTCじゃないときに、
logをrotateする時間とファイル名がおかしいようです。

rotateする時間を計算する箇所で、端数の時間を引いているところがepochで時差を考慮していないので、
localtimeに直すところで、時差分余計に加算されているようです。

## at 2013-05-31 12:35 zimezone is Asia/Tokyo
## expected filename is "2013.05.31.00.00.00" in any case.
% perl -MFile::RotateLogs -E 'say File::RotateLogs->new(logfile => "%Y.%m.%d.%H.%M.%S")->_gen_filename';
2013.05.31.09.00.00
% perl -MFile::RotateLogs -MPOSIX -E '$ENV{TZ}="UTC"; POSIX::settz; say File::RotateLogs->new(logfile => "%Y.%m.%d.%H.%M.%S")->_gen_filename';
2013.05.31.00.00.00
% perl -MFile::RotateLogs -MPOSIX -E '$ENV{TZ}="America/New_York"; POSIX::settz; say File::RotateLogs->new(logfile => "%Y.%m.%d.%H.%M.%S", rotationtime => 60*60)->_gen_filename';
2013.05.30.23.00.00

In case of rotationtime set 24h and not UTC timezone,
File::RotateLogs rotates at (0 + time differnce) o'clock.