【发布时间】:2015-07-21 09:31:51
【问题描述】:
我有一个 UIDatepicker 附加到一个名为 dateField 的文本字段。当用户单击该字段时,会弹出一个 UIDatePicker 并且用户选择出生日期。该日期作为字符串保存到该 dateField 并根据用户位置(即美国 1990 年 5 月 4 日或澳大利亚 1990 年 5 月 4 日)格式化显示。
稍后当他们按下保存按钮时,我想将日期保存到 CoreData。我一直在尝试将日期字符串转换回 NSDate,但我一直遇到问题并得到一个 nil 日期。
我认为在执行此操作之前需要设置 NSDateFormatter 区域设置和时区,因此我将其设置为用户的 currentLocale 和 localTimeZone。我也相信我需要设置日期格式......如果我将日期格式设置为“dd MMM yyyy”,如果用户区域设置为澳大利亚,则 NSDate 有效,但如果我将区域设置设置为美国,则 NSDate 有效。
我如何设置日期格式,以便它允许 dateFromString 方法工作而不管用户的语言环境如何。或者我应该以不同的方式执行此操作(即将出生日期保存为字符串而不是 NSDate 唯一时间点)
我的代码
let dateStr = "20 Aug 1990" //suppose dateField contains this string as saved from a UIDatePicker (formatted according to the user's locale ... ie would be Aug 20 1990 in USA locale)
let formatter = NSDateFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.timeZone = NSTimeZone.localTimeZone()
formatter.dateFormat = "dd MMM yyyy" //how can i set this to be non-locale specific
var dobStr = dobField.text
var dob: NSDate? = formatter.dateFromString(dobStr)
println(dob) //prints nil if user locale is USA
【问题讨论】:
标签: swift nsdate nsdateformatter uidatepicker