此示例采用基准日期并添加 7½ 小时、1 天 7½ 小时、2 天 7½ 小时等。
use Date::Manip;
use DateTime;
use DateTime::Format::DateManip;
Date::Manip::Date_Init("TZ=America/New_York", "Language=English");
my $otime = DateTime->new(
year => 2013,
month => 3,
day => 4,
hour => 0,
minute => 0,
second => 0,
time_zone => 'America/New_York',
);
my $t1 = UnixDate($otime, "%i:%M %p on %A, %B %e, %Y ");
print "original $t1\n";
for (my $i = 0; $i <= 20; $i++) {
my $dtw = $otime->clone();
$dtw->add(
minutes => (15) * 30,
days => ($i),
);
$t1 = UnixDate($dtw, "%i:%M %p on %A, %B %e, %Y ");
print "$i days $t1\n";
}
当添加 6 天 7½ 小时时,结果包含一个额外的小时。
2013 年 3 月 4 日星期一上午 12:00 0 天 2013 年 3 月 4 日星期一上午 07:30 1 天 2013 年 3 月 5 日星期二上午 07:30 2 天 2013 年 3 月 6 日星期三上午 07:30 3 天 2013 年 3 月 7 日星期四上午 07:30 4 天 2013 年 3 月 8 日星期五上午 07:30 5 天 2013 年 3 月 9 日星期六上午 07:30 6 天 2013 年 3 月 10 日星期日上午 8:30 # 为什么是 8:30 而不是 7:30? 7 天 2013 年 3 月 11 日星期一上午 07:30 8 天 2013 年 3 月 12 日星期二上午 07:30 9 天 2013 年 3 月 13 日星期三上午 07:30 10 天 2013 年 3 月 14 日星期四上午 07:30 11 天 2013 年 3 月 15 日星期五上午 07:30 12 天 2013 年 3 月 16 日星期六上午 07:30 13 天 2013 年 3 月 17 日星期日上午 07:30 14 天 2013 年 3 月 18 日星期一上午 07:30 15 天 2013 年 3 月 19 日星期二上午 07:30 16 天 2013 年 3 月 20 日星期三上午 07:30 17 天 2013 年 3 月 21 日星期四上午 07:30 18 天 2013 年 3 月 22 日星期五上午 07:30 19 天 2013 年 3 月 23 日星期六上午 07:30 20 天 2013 年 3 月 24 日星期日上午 07:30