2015-02-24 186 views
0

我似乎无法得到这个权利。 这里是我收到的原始值... sDateOG的NSString * @“2015-02-24T11:06:10.847-05:00” 0x7cd09580nsdateformatter ---将字符串转换为日期

我试图将其转换成非常干净的日期/时间戳记。

还是新的在这个,但我认为是我应该改变这一个NSDATE,然后我有最终的格式选项?

虽然我似乎无法将其设置为nsdate。 这就是我想...

NSString *sDateOG = [variableArray objectAtIndex:1]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'S''Z'"]; 

人看到我在做什么错?

+2

不太一切。首先,您不需要引用'-'或':',只需'T'。其次,你的单引号不匹配。第三,它应该是'SSS',因为秒数部分有3位数字。第四,对于那种形式的时区规格,你需要'ZZZZZ'。这一切都在[规范](http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns)中解释,您应该添加书签。 – 2015-02-24 16:39:00

+0

[dateFormatter setDateFormat:@“'yyyyMMddTHHmmSSSZZZZZ'”]; NSDate * ddate = [dateFormatter dateFromString:sDateOG];仍然没有工作......是你的意思? – solarissf 2015-02-24 16:41:30

+0

你必须引用T.你需要 - 和:字符,只需要引用它们。 – 2015-02-24 16:42:32

回答

1

你需要采取小数秒考虑(不引用任何期望的特殊字符。)此格式字符串应该工作:

"yyyy'-'MM'-'dd'T'HH':'mm':'S.SSSZZZZZ" 
+0

错误的时区码 – 2015-02-24 16:44:03

+0

它不会产生正确的东西,但它似乎解析它就好了 – 2015-02-24 16:44:59

+0

先发展并修复它,以正确地生成和解析时区,而不是仅仅解析它 – 2015-02-24 16:45:40

0

为什么要在引号之间放置所有关键字(yyyy,MM等等)? 您还必须放置尽可能多的关键字作为数字/字符(因此ZZZZZ)。

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

编辑:删除尾随没用报价

+0

你确实需要引用T.为什么最后的单引号? – 2015-02-24 16:44:43

+0

@hotlicks:输入速度太快:( – Perceval 2015-02-24 16:47:33