Swift 2.1 - NSDateFormatter 奇怪的错误
Swift 2.1 - NSDateFormatter Weird bug
美好的一天!我正在尝试使用 this 日期选择器对话框制作日期选择器。现在我在设置 defaultDate
选项时遇到问题,它需要 NSDate 所以我做了这个。
let date = NSDate()
let formatter1 = NSDateFormatter()
formatter1.dateFormat = "MMM dd"
formatter1.timeZone = NSTimeZone(abbreviation: "GMT")
formatter1.timeZone = NSTimeZone(forSecondsFromGMT: 28800)
let gmt8TimeZone = formatter1.stringFromDate(date)
let dateToday = formatter1.dateFromString(gmt8TimeZone)
print("\(gmt8TimeZone) - \(dateToday!)")
DatePickerDialog().show("Choose Date", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", defaultDate: dateToday!, datePickerMode: UIDatePickerMode.Date) { (date) -> Void in
self.dateSelected = date
self.showTimePicker()
}
问题是,它不是从我设置的 defaultDate
开始的,它是 dateToday
。所以我所做的是打印 gmt8TimeZone
和 dateToday
的日期字符串,它给了我这个 Nov 25 - 2000-11-24 16:00:00 +0000
为什么它给了我不同的日期?应该是一样的吧?我做错了什么?
只需将 NSDate() 提供给 defaultDate 参数即可。
NSDate 基本上是一个时间戳,一个固定且绝对的时间点,并且不链接到任何时区:NSDate() 绝对,完全,now.
当您 fiddle 将 NSDateFormatter 设置为 "fix" 时,您将离开绝对时间戳世界进入字符串世界 "yyyy-mm-dd...",这确实需要将时区解释为点及时。因为你搞砸了,你的约会对象就漂移了。
美好的一天!我正在尝试使用 this 日期选择器对话框制作日期选择器。现在我在设置 defaultDate
选项时遇到问题,它需要 NSDate 所以我做了这个。
let date = NSDate()
let formatter1 = NSDateFormatter()
formatter1.dateFormat = "MMM dd"
formatter1.timeZone = NSTimeZone(abbreviation: "GMT")
formatter1.timeZone = NSTimeZone(forSecondsFromGMT: 28800)
let gmt8TimeZone = formatter1.stringFromDate(date)
let dateToday = formatter1.dateFromString(gmt8TimeZone)
print("\(gmt8TimeZone) - \(dateToday!)")
DatePickerDialog().show("Choose Date", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", defaultDate: dateToday!, datePickerMode: UIDatePickerMode.Date) { (date) -> Void in
self.dateSelected = date
self.showTimePicker()
}
问题是,它不是从我设置的 defaultDate
开始的,它是 dateToday
。所以我所做的是打印 gmt8TimeZone
和 dateToday
的日期字符串,它给了我这个 Nov 25 - 2000-11-24 16:00:00 +0000
为什么它给了我不同的日期?应该是一样的吧?我做错了什么?
只需将 NSDate() 提供给 defaultDate 参数即可。
NSDate 基本上是一个时间戳,一个固定且绝对的时间点,并且不链接到任何时区:NSDate() 绝对,完全,now.
当您 fiddle 将 NSDateFormatter 设置为 "fix" 时,您将离开绝对时间戳世界进入字符串世界 "yyyy-mm-dd...",这确实需要将时区解释为点及时。因为你搞砸了,你的约会对象就漂移了。