我正在嘗試使用當前一周來開始一周,而我的回傳值是休息一周。例如,如果我輸入weekNumber17,我希望根據this回傳 4 月 25 日,但我會在 4 月 17 日回傳。
我確實查看了以下帖子,這就是我獲得以下功能的地方。在 Swift 中使用 Weeknumber 獲取一周的第一天
func getFirstDay(WeekNumber weekNumber:Int, CurrentYear currentYear: Int)->String?{
let Calendar = NSCalendar(calendarIdentifier: .gregorian)!
var dayComponent = DateComponents()
dayComponent.weekOfYear = weekNumber
dayComponent.weekday = 1
dayComponent.year = currentYear
var date = Calendar.date(from: dayComponent)
if(weekNumber == 1 && Calendar.components(.month, from: date!).month != 1){
dayComponent.year = currentYear - 1
date = Calendar.date(from: dayComponent)
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd"
return String(dateFormatter.string(from: date!))
}
uj5u.com熱心網友回復:
有幾個問題
- 對于周數,請始終使用 ISO8601 日歷。
- 對于周數,正確的 year 屬性是
yearForWeekOfYear。 - 在您的代碼中,星期從星期日 (1) 開始,鏈接的站點是指星期一。
- 在 Swift 中使用 native
Calendar。 - 在最后一行中,String 初始化程式是多余的。
- 不要強制打開日期。
func getFirstDay(weekNumber:Int, currentYear: Int) -> String? {
let calendar = Calendar(identifier: .iso8601)
var dayComponent = DateComponents()
dayComponent.weekOfYear = weekNumber
dayComponent.yearForWeekOfYear = currentYear
guard let date = calendar.date(from: dayComponent) else { return nil }
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy/MM/dd"
return dateFormatter.string(from: date)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468558.html
標籤:迅速
