将字符串转换为NSDate对象

时间:2011-09-24 09:39:14

标签: iphone objective-c ios nsdate date-format

我从webservice收到字符串“2011-09-24T00:30:00.000-07:00”。 我不知道这个格式是什么,并且想要在objective-c中转换日期对象。

所以任何人都知道如何将此字符串转换为日期。

非常感谢

3 个答案:

答案 0 :(得分:4)

从这种格式获取日期/时间有一个小问题,时区中的':'需要删除,Apple不处理这种情况,也不是正确的UTS格式。这是一个例子:

NSString *dateString = @"2011-09-24T00:30:00.000-07:00";
dateString = [dateString stringByReplacingOccurrencesOfString:@":" withString:@"" options:0 range:NSMakeRange(dateString.length-3, 1)];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date: %@", date);

NSLog输出:date: 2011-09-24 07:30:00 +0000

作为显示刚创建日期的测试:

NSString *testDateString = [formatter stringFromDate:date];
NSLog(@"date: %@", testDateString);

NSLog输出:date: 2011-09-24T03:30:00.100-0400

请注意,NSLog已将时区和时区转换为我的本地时区,考虑到这两项更改,日期/时间与原始时区相同。

答案 1 :(得分:0)

问题已被问过几次,你需要使用nsdateformatter:

NSDate from NSString

google:nsdate来自nsstring

答案 2 :(得分:0)

Web服务通常用于日期/时间表示的字符串格式为RFC 3339

它不能轻易地转换为NSDate和从NSDate转换,因为它可能包含NSDate无法表示的各种信息(例如UTC的时间偏移和没有指定时间的日期。)

有些类将RFC 3339字符串映射到本机Cocoa类型,例如this。您可以通过简单的转换获取快捷方式,但对于健壮的代码,请使用专门编写的类来处理表示。