Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDateFormatter仅在某些时区中返回特定日期的nil_Iphone_Nsdate_Nsdateformatter_Nsdatecomponents_Nstimezone - Fatal编程技术网

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