Iphone NSDateFormatter仅在某些时区中返回特定日期的nil
鉴于此代码:Iphone NSDateFormatter仅在某些时区中返回特定日期的nil,iphone,nsdate,nsdateformatter,nsdatecomponents,nstimezone,Iphone,Nsdate,Nsdateformatter,Nsdatecomponents,Nstimezone,鉴于此代码: NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyyMMdd"]; NSArray *datesArray = @[@"20130326", @"20130327", @"20130328", @"20130329", @"20130330", @"20130331", @"20130401"]; for (
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSArray *datesArray = @[@"20130326", @"20130327", @"20130328", @"20130329", @"20130330", @"20130331", @"20130401"];
for (NSString *dateString in datesArray) {
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"date: %@", date);
}
这是我所在时区(EST)的输出:
当我进入设置->常规->日期和时间,并将时区设置为约旦安曼(GMT+3),这是相同代码的输出:
date: 2013-03-25 22:00:00 +0000
date: 2013-03-26 22:00:00 +0000
date: 2013-03-27 22:00:00 +0000
date: (null)
date: 2013-03-29 21:00:00 +0000
date: 2013-03-30 21:00:00 +0000
date: 2013-03-31 21:00:00 +0000
为什么?我认为当您从字符串设置值时,必须为
日期格式化程序指定时区。看,这不完全是同一个问题,但它可能会有所帮助
希望这有帮助我认为当您从字符串设置值时,必须为日期格式化程序指定时区。看,这不完全是同一个问题,但它可能会有所帮助
希望这能有所帮助我不确定,但28日约旦安曼的时钟变化可能不是巧合:
我怀疑时钟从2013-03-28 21:59:59跳到2013-03-28 23:00:00,因此2013-03-28 22:00:00的时间在约旦安曼时区并不存在。我不确定,但约旦安曼28日的时钟变化可能不是巧合:
我的怀疑是时钟从2013-03-28 21:59:59跳到2013-03-28 23:00:00,因此2013-03-28 22:00:00的时间在约旦安曼时区并不存在。从1970年到现在,在安曼DST开始的日期,返回了零。,从1970年到现在,在安曼DST开始的日期,返回了nil
。您的假设是正确的,但即使在标准化时间后,约旦安曼仍有日期导致NSDateFormatter返回nil。非常非常奇怪。到目前为止,我只在这个时区看到过它。你的假设是正确的,但即使在标准化了时间之后,约旦安曼仍然有一些日期导致NSDateFormatter返回零。非常非常奇怪。到目前为止,我只在这个时区见过它。
date: 2013-03-25 22:00:00 +0000
date: 2013-03-26 22:00:00 +0000
date: 2013-03-27 22:00:00 +0000
date: (null)
date: 2013-03-29 21:00:00 +0000
date: 2013-03-30 21:00:00 +0000
date: 2013-03-31 21:00:00 +0000