在我的项目中我得到 “2008-02-01T10:03:23.793-06:00” 我必须将字符串中的这个日期格式转换为我正在使用的 NSDate

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

但是当我使用 NSLog 打印日期值时,我得到的值为 null。

请帮帮我

谢谢

有帮助吗?

解决方案

NSDateFormatter 将无法解析它,因为时区不符合 RFC 822 或 GMT 标准. 。问题在于最后一个“:”,要获得它,您需要“GMT”。

您的日期尊重 RFC 3339.

您将需要使用 NSFormatter 来解析它。你应该使用 getObjectValue:forString:errorDescription:

设置字符串 @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

其他提示

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(说不上副手是否需要setLenient。)

只需使用,来代替(注意代替 “Z”, “ZZZ”):

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];

我认为你需要设置格式化语言环境了。看看这里

谷歌的GData Objective-C的客户机具有一个类(GDataDateTime),其可以解析RFC 3339的日期。

HTTP:// code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.m

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top