Swift-打印一年中的当前星期几

时间:2018-09-03 09:42:10

标签: swift date week-number

我需要一种打印今年到目前为止的周数的方法。
我设法打印了天数和月数(请参见下面的代码)。
但是无法弄清楚在整个星期中该怎么做。

今年到目前为止的总天数:

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 :(得分:1)

尝试以下代码段。它是用 Swift 3和Swift 4 编写的。

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

这将打印一年中的整个星期。

答案 1 :(得分:0)

使用它作为今天的日期:

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

答案 2 :(得分:0)

extension Date{
    var weekOfYear: Int {
        return Calendar.current.component(.weekOfYear,  from: self)
    }
}

用法:

print("WeakOfYear :: ", Date().weekOfYear)