Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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
Objective c 使用NSDateFormatter分析日期_Objective C_Ios_Cocoa Touch - Fatal编程技术网

Objective c 使用NSDateFormatter分析日期

Objective c 使用NSDateFormatter分析日期,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,给我一个日期: 2012-10-11T23:14:00-04:00 我正在使用此格式为NSDateFormatter解析: yyyy-MM-dd'T'HH:mm:ss-ZZ 但是它返回nil您的日期格式错误。如果要转换的字符串中有冒号,则必须在格式字符串中放入5个Z字符,这是正确的用法。此外,您永远不会将+/-作为格式的一部分,因为您不能保证只有日期+或-GMT(至少在您谈论/format/时是这样) 因此,正确的格式字符串应该是yyyy'-'MM'-'dd'T'HH':'MM':'ssZZ

给我一个日期:

2012-10-11T23:14:00-04:00
我正在使用此格式为NSDateFormatter解析:

yyyy-MM-dd'T'HH:mm:ss-ZZ

但是它返回nil

您的日期格式错误。如果要转换的字符串中有冒号,则必须在格式字符串中放入5个Z字符,这是正确的用法。此外,您永远不会将+/-作为格式的一部分,因为您不能保证只有日期+或-GMT(至少在您谈论/format/时是这样)

因此,正确的格式字符串应该是
yyyy'-'MM'-'dd'T'HH':'MM':'ssZZZZZ

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ"];
NSDate* date = [formatter dateFromString:@"2012-10-11T23:14:00-04:00"];
NSLog(@"Date: %@", date); // This correctly logs Date: 2012-10-12 03:14:00 +0000

RFC 822格式只能使用两个Z字符,日期字符串必须如下所示:
2012-10-11T23:14:00-0400
(即时区偏移上没有小时/分钟分隔符)。示例字符串中的时区是ISO-8601。有关详细信息,请参阅:

您的日期格式错误。如果要转换的字符串中有冒号,则必须在格式字符串中放入5个Z字符,这是正确的用法。此外,您永远不会将+/-作为格式的一部分,因为您不能保证只有日期+或-GMT(至少在您谈论/format/时是这样)

因此,正确的格式字符串应该是
yyyy'-'MM'-'dd'T'HH':'MM':'ssZZZZZ

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ"];
NSDate* date = [formatter dateFromString:@"2012-10-11T23:14:00-04:00"];
NSLog(@"Date: %@", date); // This correctly logs Date: 2012-10-12 03:14:00 +0000

RFC 822格式只能使用两个Z字符,日期字符串必须如下所示:
2012-10-11T23:14:00-0400
(即时区偏移上没有小时/分钟分隔符)。示例字符串中的时区是ISO-8601。有关更多信息,请参阅:

请显示您用于执行此操作的代码。“没有这些,我们很难提供帮助。@JeffreyBlake所有相关信息都在帖子中。”。若你们认为你们需要更多的信息,那个么你们对这个问题并没有足够的了解来回答。如果好奇,请阅读下面的答案。我很高兴你得到了你想要的答案,但从这个问题已经结束的事实来看,似乎很清楚,我不是唯一一个认为需要更多解释的人。FWIW,我留下评论是因为我看到了接近票和反对票-我试图反驳他们,假设你会相应地改进这个问题。他们认为错了,哈哈。真的没有什么比这个问题更重要的了。解析日期需要两件事。日期和格式。这就是我提供的。但我猜他们想要几十行不相关的代码(比如很多问题)。实际上,我采取了一个额外的步骤来简化这个问题…我可以盲目复制粘贴我的整个函数…请显示您用于执行此操作的代码。“没有这些,我们很难提供帮助。@JeffreyBlake所有相关信息都在帖子中。”。若你们认为你们需要更多的信息,那个么你们对这个问题并没有足够的了解来回答。如果好奇,请阅读下面的答案。我很高兴你得到了你想要的答案,但从这个问题已经结束的事实来看,似乎很清楚,我不是唯一一个认为需要更多解释的人。FWIW,我留下评论是因为我看到了接近票和反对票-我试图反驳他们,假设你会相应地改进这个问题。他们认为错了,哈哈。真的没有什么比这个问题更重要的了。解析日期需要两件事。日期和格式。这就是我提供的。但我猜他们想要几十行不相关的代码(比如很多问题)。实际上,我采取了额外的步骤来简化这个问题…我可以盲目复制粘贴我的整个函数。。。