dateFormatter字符串,用于日期类型2013-03-24T02:15:23-08:00 +目标C.

时间:2014-02-03 08:10:46

标签: ios objective-c nsdate

我想将2013-03-24T02:15:23-08:00字符串转换为NSDate对象。我试过格式化字符串yyyy-MM-ddTHH:mm:ss-Z,但是NSDate对象是零。 我知道这是一个微不足道的问题,但现在我真的陷入其中。

以下是我的转化代码

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
        [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss-Z"];
        NSDate* date = [dateFormatter dateFromString:image.dateTaken];

请帮助。

3 个答案:

答案 0 :(得分:4)

日期格式字符串中有两个错误:

  • 日期格式中的(文字)T字符必须引用为'T'
  • " ISO8601时区的格式"例如-08:00ZZZZZ。 请注意,减号是时区本身的一部分,而不是格式的一部分。

这应该有效:

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

答案 1 :(得分:1)

NSString *dateString = @"2013-03-24T02:15:23-08:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *dateFromString = [[NSDate alloc] init];

dateFromString = [dateFormatter dateFromString:dateString];

答案 2 :(得分:1)

2013-03-24T02:15:23-08:00在此字符串中Z不是-08:00的正确格式...

Z的正确格式如下

Z:GMT-08:00

Z:-0800

请查看以下链接以供参考

http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

如果您将日期字符串更改为-0800或GMT-08:00,则可以获得正确的日期...