美好的一天!我正在尝试使用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
为什么它给了我不同的日期?它应该是一样的吗?我做错了什么?
答案 0 :(得分:1)
只需将NSDate()提供给defaultDate参数即可。
NSDate基本上是一个时间戳,一个固定的和绝对的时间点,并且没有链接到任何timeZone:NSDate()完全是,现在。
当你摆弄NSDateFormatter以及#34;修复"它,你离开绝对时间戳世界进入弦乐世界" yyyy-mm-dd ..."确实需要将时区解释为时间点。因为你搞砸了,你的日期会漂移。