无法计算当月的第一天

时间:2016-08-18 07:01:55

标签: swift nsdate nscalendar

我试图计算与当月第一天相对应的DateNSDate)实例(我不关心时间)。

我正在使用此代码(Swift 3):

let gregorian = Calendar(identifier: .gregorian)

let today = Date()

var dateComponents = gregorian.dateComponents([.era, .year, .month], from: today)
dateComponents.day = 1

guard let firstDayOfTheMonth = gregorian.date(from: dateComponents) else { 
    return 
}

在调试器上,today为我提供了Date 2016-08-18 06:52:39 UTC的正确值。但是,firstDayOfTheMonth会提供:Date 2016-07-31 15:00:00 UTC,即 上个月的最后一天。

显然我已经关闭了一个,但无法弄清楚原因。

更糟糕的是,当我试图获得工作日时,我得到正确的值2(星期一,8月1日):

// Sun = 1, Mon = 2, Wed = 3, ...
guard let firstWeekDay = gregorian.dateComponents([.weekday], from: firstDayOfTheMonth).weekday else { 
    return 
}

...所以, 发生了什么?

0 个答案:

没有答案