Swift - 打印一年中的当前一周



我需要一种方法来打印今年到目前为止的周数。
我已经设法打印了天数和月数(请参阅下面的代码(。
但无法弄清楚如何在总周数内做同样的事情。

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

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)

请尝试以下代码片段。它是用 Swift4 和 Swift 5编写的。

let currentDate = Date() 
print(currentDate.dayOfYear)   // Day of Year
print(currentDate.weekOfYear)  // Week of Year
print(currentDate.monthOfYear) // Month of Year

这将分别打印一年中的总天数、周数和月数。

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)!
}
}

今天用这个日期:

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
extension Date{
var weekOfYear: Int {
return Calendar.current.component(.weekOfYear,  from: self)
}
}

用法:

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

最新更新