2011-06-23 67 views
91

我需要以包含毫秒的格式解析字符串。我使用什么格式字符串来获取正确的日期值?iPhone上的日期字符串中使用了几毫秒的格式字符串?

例如,假设我有以下值的字符串:“2011-06-23T13:13:00.000”

什么格式字符串我传递给我的NSDateFormatter在下面的代码?

NSString *dateValue = @"2011-06-23T13:13:00.000"; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
NSString *formatString = @"yyyy-MM-dd'T'HH:mm:ss.???"; 
[formatter setDateFormat:formatString]; 
NSDate *date = [formatter dateFromString:dateValue]; 

我用什么来代替???在上面的代码中?

+0

'sss'怎么样? – EmptyStack

回答

190

小数点后三位它SSS,每Unicode Locale Data Markup Language spec

"yyyy-MM-dd'T'HH:mm:ss.SSS" 

更一般地说,使用任意数量的大写字母S来得到秒分量的小数位数。 (因此ss.S将显示时间以十进制十分之一秒为例)。

+2

我在想知道你是否知道我怎样才能对毫秒进行宽松的解析?日期可能有6,7甚至毫秒。我可以使用正则表达式,但是我想知道是否可以使用正确的格式字符串开箱即用。 – Cyupa

+0

这样,S的最大数量是三个,例如SSS。如果你添加更多,你只需得到零对于timeIntervalSince1970的1415986217.544384和.SSSSSS你得到.544000所以不是一个很好的解决方案。 – malhal

-1

使用fff为第二

"yyyy-MM-dd'T'HH:mm:ss.SSS" 
+0

失败。我没有回来。 – ageektrapped

+0

它也许是大写字母F吗? – Luke

4

您需要在例如我的日期是年底通过相同数量的“S”的“2015-11-17T03:36:45.041503Z”的我用“YYYY-MM-dd'T'HH :mm:ss.SSSSSSz'格式化程序,我的意思是看到'S'的数字是6,为6位数字。