DateFormatter#39;s returns nil for specific date strings without time in Swift(DateFormatter 在 Swift 中对没有时间的特定日期字符串返回 nil)
问题描述
I really don't get what is happening with this code, I'm trying to convert a string to date. What I don't understand is that the conversion works for most of the dates, but doesn't work specially for only 2 dates.
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"
dateFormatter.dateFromString("1 de octubre")
dateFormatter.dateFromString("2 de octubre")
dateFormatter.dateFromString("3 de octubre")
dateFormatter.dateFromString("4 de octubre")
dateFormatter.dateFromString("5 de octubre")
dateFormatter.dateFromString("6 de octubre")
dateFormatter.dateFromString("7 de octubre")
dateFormatter.dateFromString("8 de octubre")
dateFormatter.dateFromString("9 de octubre")
dateFormatter.dateFromString("10 de octubre")
dateFormatter.dateFromString("11 de octubre")
dateFormatter.dateFromString("12 de octubre")
dateFormatter.dateFromString("13 de octubre")
dateFormatter.dateFromString("14 de octubre")
dateFormatter.dateFromString("15 de octubre")
dateFormatter.dateFromString("16 de octubre")
dateFormatter.dateFromString("17 de octubre")
dateFormatter.dateFromString("18 de octubre")
dateFormatter.dateFromString("19 de octubre")
dateFormatter.dateFromString("20 de octubre")
dateFormatter.dateFromString("21 de octubre")
dateFormatter.dateFromString("22 de octubre")
dateFormatter.dateFromString("23 de octubre")
dateFormatter.dateFromString("24 de octubre")
dateFormatter.dateFromString("25 de octubre")
dateFormatter.dateFromString("26 de octubre")
dateFormatter.dateFromString("27 de octubre")
dateFormatter.dateFromString("28 de octubre")
dateFormatter.dateFromString("29 de octubre")
dateFormatter.dateFromString("30 de octubre")
I made this code to try out in Playground, but it reproduces some dates I'm getting in my production code. Take a look in the output that this code produces:
As you can see in the image, it doesn't work for October 8 and 15. Works for all the others. I also tried August and September, and in those months all days work. I also tried to put the dates in Portuguese in pt-br locale, and also doesn't work for October 8 and 15. Is it explainable?
Update: @zneak code produces the following output for me:
In other words, stopped running October 8.
You just need to set your date formatter calendar property:
Xcode 8.2.1 • Swift 3.0.2
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.locale = Locale(identifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"
dateFormatter.date(from: "8 de octubre") // "Oct 8, 2000, 1:00 AM"
这篇关于DateFormatter 在 Swift 中对没有时间的特定日期字符串返回 nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:DateFormatter 在 Swift 中对没有时间的特定日期字符串返回 nil
基础教程推荐
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01