【发布时间】:2015-04-19 19:02:59
【问题描述】:
我知道下面的代码返回的是 GMT 时间,我们目前是 GMT+1。我正在尝试调整我的代码,以便返回正确的日期。如果我只是添加 1 小时的代码,它将在 GMT+1 恢复为 GMT 时失败。有什么想法吗?
let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
gregorian.timeZone = NSTimeZone.localTimeZone()
var unitFlags : NSCalendarUnit = NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitWeekOfYear | NSCalendarUnit.CalendarUnitWeekday
gregorian.firstWeekday = 2
var components:NSDateComponents = gregorian.components(unitFlags, fromDate: date)
components.weekday = 2
components.hour = 0
components.minute = 0
components.second = 0
let resultDate:NSDate = gregorian.dateFromComponents(components)!
println("The resultDate is \(resultDate)")
【问题讨论】:
-
NSDate 的 println() 始终以 GMT 打印日期(这不会使其“不正确”)。这看起来与您上一个问题中的问题相同。 – 要根据您当地的时区打印日期,您必须使用 NSDateFormatter 将其转换回字符串。
-
感谢 Martin,我正在记录两个日期,并生成一个介于两个日期之间的值的 pdf 报告。我知道我可以使用 NSDateFormatter 将日期转换为字符串值。我似乎无法让日期正确。
标签: swift nsdatecomponents gregorian-calendar