转换ex.2010-09-11T00:00:00 + 01:00格式为NSDate

gna*_*her 9 iphone objective-c nsdate

我花了太多时间(超过一个小时)来完成我的两分钟任务.在iPhone上:

NSString * dateString = @"2010-09-11T00:00:00+01:00";
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssTZD"];
NSDate  *date = [formatter dateFromString:dateString];
Run Code Online (Sandbox Code Playgroud)

结果:日期==无

我错过了什么!(除了我的截止日期)

问候,

Tom*_*mmy 12

根据unicode规范, TZD不是定义的格式化程序.您链接到其他地方的文档是某人向W3C提出的建议,仅供讨论.苹果公司遵循的unicode标准是一个完整的标准,来自不同的机构.

最接近你想要的是ZZZ(即@"YYYY-MM-dd'T'HH:mm:ssZZZ"),但中间没有冒号.所以你需要使用字符串:

2010-09-11T00:00:00+0100
Run Code Online (Sandbox Code Playgroud)

而不是你现在拥有的那个以+01:00结束.

例如以下内容:

NSString * dateString = @"2010-09-11T00:00:00+0100";
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZZZ"];
NSDate  *date = [formatter dateFromString:dateString];
NSLog(@"%@", date);
Run Code Online (Sandbox Code Playgroud)

记录2010-09-10 23:00:00 GMT的有效日期对象.