perl – 为什么在8:30增加6天半小时到午夜?
发布时间:2020-12-15 21:58:00 所属栏目:大数据 来源:网络整理
导读:此示例采用基准日期并添加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,h
此示例采用基准日期并添加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 $t1n"; for (my $i = 0; $i <= 20; $i++) { my $dtw = $otime->clone(); $dtw->add( minutes => (15) * 30,days => ($i),); $t1 = UnixDate($dtw,%Y "); print "$i days $t1n"; } 当添加6天7?小时时,结果包含额外的小时. original 12:00 AM on Monday,March 04,2013 0 days 07:30 AM on Monday,2013 1 days 07:30 AM on Tuesday,March 05,2013 2 days 07:30 AM on Wednesday,March 06,2013 3 days 07:30 AM on Thursday,March 07,2013 4 days 07:30 AM on Friday,March 08,2013 5 days 07:30 AM on Saturday,March 09,2013 6 days 08:30 AM on Sunday,March 10,2013 # why 8:30 and not 7:30? 7 days 07:30 AM on Monday,March 11,2013 8 days 07:30 AM on Tuesday,March 12,2013 9 days 07:30 AM on Wednesday,March 13,2013 10 days 07:30 AM on Thursday,March 14,2013 11 days 07:30 AM on Friday,March 15,2013 12 days 07:30 AM on Saturday,March 16,2013 13 days 07:30 AM on Sunday,March 17,2013 14 days 07:30 AM on Monday,March 18,2013 15 days 07:30 AM on Tuesday,March 19,2013 16 days 07:30 AM on Wednesday,March 20,2013 17 days 07:30 AM on Thursday,March 21,2013 18 days 07:30 AM on Friday,March 22,2013 19 days 07:30 AM on Saturday,March 23,2013 20 days 07:30 AM on Sunday,March 24,2013 解决方法
因为夏令时开始于2013年3月10日在America / New_York时区.
DateTime首先增加$i天(3月10日午夜)然后增加450分钟到达8:30 AM(因为3月10日凌晨1点59分之前的分钟是凌晨3点).要添加的参数顺序没有意义;见
Adding a Duration to a Datetime.
因为它增加了几天和几天分开处理(并处理第一天),效果仅发生在DST实际开始或结束的日期.如果你想要一个特定的时间,只需直接设置它而不是使用add.或者调用添加两次,一次添加分钟,然后再添加几天. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |