Mac*_*185 16 nsdate nsdateformatter ios
我想提前道歉,问一个重复的问题,但其他解决方案都没有对我有用.每次我尝试将日期字符串传递给dateFromString函数时,我都会得到nil.我还没有读过自iOS 7更新以来发生过变化的任何地方,但如果这对于是否仍然以相同的方式起作用有所不同,我现在正在进行更新.
这是我用来从字符串创建日期的代码:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSDate *date = [[NSDate alloc] init];
date = [dateFormat dateFromString:dateString];
return date;
Run Code Online (Sandbox Code Playgroud)
我已根据我为解决此问题而阅读的所有解决方案设置了dateFormat,但这些设置都没有解决问题.systemLocale肯定是为英语设置的,所以不应该导致任何问题.
这是我传递给dateFromString的dateString:
Wednesday, October 9, 2013 at 2:40:29 PM Pacific Daylight Time
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
nei*_*lco 41
这里有两个问题:
formatter期望(@"yyyy-MM-dd hh:mm:ss")的日期字符串格式与您尝试解析的日期字符串的格式()不同@"EEEE, MMMM d, yyyy 'at' h:mm:ss a zzzz".
将formatter的语言环境设置[NSLocale systemLocale]为导致[dateFormat dateFromString:]返回nil.设置为[NSLocate currentLocale].
格式化程序的完整代码应为:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
[dateFormat setDateFormat:@"EEEE, MMMM d, yyyy 'at' h:mm:ss a zzzz"];
[dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSDate *date = [dateFormat dateFromString:dateString];
Run Code Online (Sandbox Code Playgroud)
Oli*_*lie 25
获得nil的另一种方法是,如果你使用hh并且你的小时数是24小时制,大于12小时,那么你需要HH(或者H,零填充).
那是:
为此提供给@neilco的帽子(请参阅他的回答下面的评论).如果你喜欢这个答案,请向他投票.
使用固定格式日期(例如 RFC 3339)时,您可以设置 dateFormat 属性以指定格式字符串。
如果您的日期格式是2017-06-16T17:18:59.082083Z那么dateFormat属性应该是这样的yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ。
斯威夫特 3
let dateFormatter = DateFormatter()
let date = "2017-06-16T17:18:59.082083Z"
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"
let result = dateFormatter.date(from: date) // 2017-06-16 17:18:59 +0000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24683 次 |
| 最近记录: |