开发者

iOS 4.2 DateFormatter

开发者 https://www.devze.com 2023-02-08 16:39 出处:网络
The following code worked in my app previous to iOS 4.2. NSString *sunday = @\"2011-03-13 20:15 -04:00\";

The following code worked in my app previous to iOS 4.2.

NSString *sunday = @"2011-03-13 20:15 -04:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm Z"];
NSDate *myDate = [dateFormatter dat开发者_如何学JAVAeFromString:sunday];

NSLog(@"sunday: %@ myDate: %@ fromNow: %d", sunday, myDate, [myDate timeIntervalSinceNow]);

Outputs:

sunday: 2011-03-13 20:15 -04:00 myDate: (null) fromNow: 0

What am I doing wrong here? myDate is null. Is there something about dateFormmater that changed and I'm missing. I imagine it's something trivial at this point as I've been staring at this...


If I understand the problem correctly, Z specifier parses both "-0400" and "GMT-04:00", not "-04:00". UTS #35 seems to confirm it. In my tests, though, it even parsed "GMT-0400". So "-04:00" does look like the only time zone format NSDateFormatter refuses to understand.

May I cynically suggest Apple's bug reporter as the answer?


Try quoting your dashes, eg:

  @"yyyy'-'MM'-'dd HH':'mm Z"

My best reading here: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns seems to suggest that this is actually required, though I seem to recall having used that same date formatting pattern in the past on iOS w/o issue.

0

精彩评论

暂无评论...
验证码 换一张
取 消