我遇到设置日期和设备时区的问题,导致我的单元测试出现问题。
这里是我创建日期的代码:
private func createDate(weekday: Int, hour: Int, minute: Int)->Date{
var components = DateComponents()
components.hour = hour
components.minute = minute
components.year = 2016
components.weekday = weekday
components.weekdayOrdinal = 10
components.timeZone = TimeZone(abbreviation: "CET")
var cal = Calendar.current
cal.timeZone = TimeZone(abbreviation: "CET")!
return cal.date(from: components)!
}
这是我的测试,我在TimeZone Paris的星期一0:01创建日期:
func testMon0001(){
let date = createDate(weekday: 2, hour: 00, minute: 01)
let unitFlags : Set<Calendar.Component> = [.era, .hour, .minute, .day, .month, .year, .timeZone, .weekday]
var components = Calendar.current.dateComponents(unitFlags, from: date)
components.timeZone = TimeZone(abbreviation: "CET")
guard let hour = components.hour else {
[...]
}
[...]
}
如果设备在时区温哥华运行,则结束时间为16,这是不正确的。日期对象为“2016-03-06 23:01:00 +0000”
如何忽略设备时区?