Swift - Распечатайте текущую неделю года - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужен способ напечатать количество недель в этом году.
Мне удалось распечатать количество дней, а также количество месяцев (см. Код ниже).
Но не могу понять, как сделать то же самое для общего количества недель.

Всего дней в этом году:

let dateDay = Date()
                        let dateFormatterDay = DateFormatter()
                        dateFormatterDay.dateFormat = "DD"
                        let dateByDay = dateFormatterDay.string(from: dateDay)
                        print(dateByDay)

Всего месяцев в этом году:

 let dateMonth = Date()
                        let dateFormatterMonth = DateFormatter()
                        dateFormatterMonth.dateFormat = "MM"
                        let dateByMonth = dateFormatterMonth.string(from: dateMonth)
                        print(dateByMonth)

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Попробуйте следующий фрагмент кода. Это написано в Swift 3 и Swift 4 .

let calendar = Calendar.current
let weekOfYear = calendar.component(.weekOfYear, from: Date())
print(weekOfYear)

Будет напечатана полная неделя года.

0 голосов
/ 03 сентября 2018
extension Date{
    var weekOfYear: Int {
        return Calendar.current.component(.weekOfYear,  from: self)
    }
}

Использование:

print("WeakOfYear :: ", Date().weekOfYear)
0 голосов
/ 03 сентября 2018

Используйте это для сегодняшней даты:

Calendar.current.ordinality(of: .weekOfYear, in: .year, for: Date())!

Точно так же вы можете использовать его для дня года:

Calendar.current.ordinality(of: .day, in: .year, for: self)!

Или текущий месяц:

Calendar.current.ordinality(of: .month, in: .year, for: self)!

Вы также можете определить их как расширения на Date:

extension Date {
    public var dayOfYear: Int {
        return Calendar.current.ordinality(of: .day, in: .year, for: self)!
    }
    public var weekOfYear: Int {
        return Calendar.current.ordinality(of: .weekOfYear, in: .year, for: self)!
    }
    public var monthOfYear: Int {
        return Calendar.current.ordinality(of: .month, in: .year, for: self)!
    }
}

let nowDate = Date() //"Sep 3, 2018 at 10:54 AM"
nowDate.dayOfYear    //246
nowDate.weekOfYear   //36
nowDate.monthOfYear  //9
...