我在iPhone上的日期字符串中以毫秒为单位使用哪种格式的字符串?


100

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

例如,假设我有一个带有以下值的字符串:“ 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];

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

Answers:


211

这是SSS,按照Unicode语言环境数据标记语言规范

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

更一般而言,使用任意数量的大写S字符可在小数秒内获取小数位。(例如,ss.S将显示时间到最接近的十分之一秒。)


2
我想知道您是否知道如何进行毫秒级的宽解析?该日期可能有6、7甚至没有毫秒。我可以使用正则表达式,但是我想知道是否可以使用适当的格式字符串直接使用它。
Cyupa 2013年

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

@Cyupa毫秒仅是1/1000秒。小数点后6位是毫秒,小数点后1位是毫秒。–对任何小数位数使用毫秒与按字面意义用于比喻一样错误;您仍然可以做到,但这改变了单词的含义。
Liggliluff


4

您需要在末尾传递相同数量的'S',例如,我的日期是'2015-11-17T03:36:45.041503Z',我使用的是'yyyy-MM-dd'T'HH:mm:ss.SSSSSSz格式化程序,我的意思是看到“ S”的数目是6,因为6位数字即将出现。


将其格式化为微秒而不是毫秒的纳秒。我已经尝试过'yyyy-MM-dd'T'HH:mm:ss.SSSSSSzz'和'yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSz',但它不起作用。
IndexOutOfDevelopersException

-1

使用SSS了第二三位小数

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

那失败了。我没有回来的日期。
ageektrapped
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.