Как к первой дате месяца - PullRequest
0 голосов
/ 01 ноября 2018

всякий раз, когда я использую этот метод, он всегда показывает неправильную дату.

func startOfMonth() -> Date {
    let calendar = Calendar.current
    let currentDateComponents = calendar.dateComponents([.year, .day, .month], from: self)
    return calendar.date(from: currentDateComponents) ?? Date()
} 

Выход:

2018-10-31 18:30:00 + 0000

Я хочу:

2018-11-1 18:30:00 + 0000

1 Ответ

0 голосов
/ 01 ноября 2018

Если вы хотите получить первый день месяца, вы не должны получать дневной компонент от первоначальной даты:

extension Date {
    var startOfMonth: Date {
        return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month], from: self))!
    }
}

Date().startOfMonth.description(with: .current) //  "Thursday, November 1, 2018 at 12:00:00 AM Brasilia Standard Time"
...