DateFormatting导致null

时间:2017-05-31 10:06:44

标签: ios objective-c date formatting

我有来自服务器的日期字符串“5/31/2017 10:05:59 AM +00:00”,我正在尝试将其转换为NSDate,

{{1}}

但它给了我null,Plase Help Thanks。

5 个答案:

答案 0 :(得分:1)

试试这个

dateFormatter.dateFormat = @"MM/dd/yyyy hh:mm:ss a z";

答案 1 :(得分:1)

将dateformat设置为

dateFormatter.dateFormat = @"MM/dd/yyyy hh:mm:ss a z";

完整代码是

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"MM/dd/yyyy hh:mm:ss a z";
dateFormatter.timeZone = [NSTimeZone localTimeZone];
NSDate *expiryDate = [dateFormatter dateFromString:@"5/31/2017 10:05:59 AM +00:00"];
NSLog(@"expiry date %@", expiryDate);

<强>输出

enter image description here

答案 2 :(得分:1)

您使用的日期格式错误。 5/31/2017 10:05:59 AM +00:00

而不是MM/dd/yyyy hh:mm:ss a +zz,您应该使用“M/dd/yyyy hh:mm:ss a Z

但在使用NSDateFomatter之前,您应该使用:从时区中删除stringByReplacingOccurrencesOfString,因为Z会将日期解析为+0000

要进行更多测试,您可以使用以下链接:http://nsdateformatter.com

答案 3 :(得分:0)

您的代码是正确的,但日期格式错误。 检查以下代码

  

Z而不是zz

NSString *expiration =@"5/31/2017 10:05:59 AM +00:00";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"MM/dd/yyyy hh:mm:ss a Z";
dateFormatter.timeZone = [NSTimeZone localTimeZone];
NSDate *expiryDate = [dateFormatter dateFromString:expiration];
NSLog(@"expiry date %@", expiryDate);

答案 4 :(得分:0)

好的,试试这样:heredateFormatter.dateFormat = @"MM-dd-yyyy hh:mm:ss a zz";