微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – NSDateFormatter.dateFromString以特定语言为特定日期返回nil

我真的不知道这个代码发生了什么,我试图将一个字符串转换为日期.我不明白的是,转换适用于大多数日期,但不适用于仅2个日期.
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")

我使用这个代码在Playground中试用,但是它再现了我在生产代码中获得的一些日期.看看这段代码产生的输出

如图所示,它在10月8日和15日不起作用.适用于所有其他人.我也尝试了8月和9月,在这几个月里,所有的日子都在工作.我也试图把葡萄牙语的日期放在pt-br语言环境中,也不适用于10月8日和15日.这是可以解释的吗?

更新:@zneak代码为我生成以下输出

换句话说,10月8日停止运行.

解决方法

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"

Swift 2.x

您只需要设置日期格式化日历属性

let dateFormatter = NSDateFormatter()

// add a calendar
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)

dateFormatter.locale = NSLocale(localeIdentifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"

原文地址:https://www.jb51.cc/iOS/337659.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐