我需要找到一个可以适应以下两个日期的日期格式:
2012-01-22T14:27:31.176+0000
2012-01-22T14:27:31+0000
如您所见,唯一的区别是日期2没有小数秒。
两种日期格式为:
yyyy-MM-dd'T'HH:mm:ss.SZ
yyyy-MM-dd'T'HH:mm:ssZ
第二个省略 .S 。
是否可以选择 .S ?或者我必须继续使用2种不同的格式?
问题在于我从API调用中获取日期,有时它会带有小数秒,有时则没有。
我想我可以检测到小数位的存在并相应地使用两种不同的日期格式,但我一直在寻找更清洁的解决方案。
谢谢!
答案 0 :(得分:1)
您可以将NSDateFormatter
的{{1}}属性设置为lenient
,这允许YES
对您的输入字符串进行猜测。但是,你应该测试一下,因为它可能会给你一些误报。
答案 1 :(得分:0)
嗯,首先要看的是数据的实际长度。不干净,但应该工作
答案 2 :(得分:0)
您可以测试字符串的长度,然后根据长度使用2种不同的日期格式化程序之一吗?
答案 3 :(得分:0)
我会有两个日期格式化程序,然后选择要使用的日期格式化程序,具体取决于日期字符串中是否有小数位。
我不认为有一个格式字符串会使十进制可选
或者你可以使用带小数秒的格式字符串,你的日期没有小数秒只会在结尾显示.00,可能看起来更一致吗?
答案 4 :(得分:0)
@JustSid在这种情况下建议的“宽大”属性不起作用。
没有找到“更清洁”的解决方案,我回到了我的第一个,它检测到小数位的存在并相应地使用两种不同的日期格式。
NSRange textRange =[targetDate rangeOfString:@"."];
if(textRange.location == NSNotFound) {
format = @"yyyy-MM-dd'T'HH:mm:ssZ";
} else {
format = @"yyyy-MM-dd'T'HH:mm:ss.SZ";
}