无法将此dateString解析为NSDate

时间:2013-01-22 22:48:38

标签: ios objective-c

我正在尝试解析

2013-01-23T22:46:29.564Z

进入NSDate:

NSDate *date = [GeneralHelper getDateFromDateString:expiryDateASStr];
if(date != nil) {
    printf("\n PARSED DATE %s", [date.description UTF8String]);
} else {
    printf("\n failed to parse");
}

但它失败了,我怎么能让它发挥作用?谢谢!

2 个答案:

答案 0 :(得分:4)

使用NSDateFormatter

NSString * dateString = @"2013-01-23T22:46:29.564Z";
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:SS.SSS'Z'"];
NSDate * date = [dateFormatter dateFromString:dateString];

答案 1 :(得分:4)

就像@Gabriele所说,使用NSDateFormatter是可行的方法。以下内容适用于您,包括日期格式:

NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setLocale:[NSLocale currentLocale]];
[df setCalendar:[NSCalendar currentCalendar]];
[df setTimeZone:[NSTimeZone defaultTimeZone]];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:SS.SSS'Z'"];
NSLog(@"%@", [df dateFromString:expiryDateASStr]);

除非您希望在“年度周”日历中使用年份,否则请勿使用大写字母“YYYY”。大多数用例“yyyy”是指定年份的正确方法。