Swift使用组件创建日期

时间:2016-12-02 14:53:52

标签: ios swift date timezone

我遇到设置日期和设备时区的问题,导致我的单元测试出现问题。

这里是我创建日期的代码:

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”

如何忽略设备时区?

0 个答案:

没有答案