Продление даты дает несколько ответов - PullRequest
0 голосов
/ 02 мая 2019

Моя цель - получить дату начала и окончания недели. Итак, я нашел: https://stackoverflow.com/a/46402722/4757272, который был довольно аккуратным решением. У меня, однако, есть некоторые проблемы. Попробовав это, переменная с именем sunday на самом деле является субботой, когда я смотрю в календарь, это довольно тревожно, но здесь возникает действительно тревожная часть:

Playground image

extension Date {
    var startOfWeek: Date? {
        let gregorian = Calendar(identifier: .gregorian)
        guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
        return gregorian.date(byAdding: .day, value: 1, to: sunday)
    }

    var endOfWeek: Date? {
        let gregorian = Calendar(identifier: .gregorian)
        guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) else { return nil }
        return gregorian.date(byAdding: .day, value: 7, to: sunday)
    }
}

dump(Date().startOfWeek)
dump(Date().endOfWeek)

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

...