How to set the first day of current week to Tuesday in Swift?

匿名 (未验证) 提交于 2019-12-03 07:36:14

问题:

How to set the first day of current week to Tuesday in Swift 3? The schedule will update every Tuesday so the first day have to start from Tuesday.

and then display on label :

thisWeekDate.text! = "\(first day of current week) - \(last day of current week)" 

Full code.

let today = NSDate()     let nextTue = Calendar.current.date(byAdding: .day, value: 6, to: today as Date)     let formatter = DateFormatter()     formatter.dateFormat = "yyyy-MM-dd"     let todayString = formatter.string(from: today as Date)     let nextString = formatter.string(from: nextTue!)     formatter.dateFormat = "dd-MMM-yyyy"      let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)     let components = calendar!.components([.weekday], from: today as Date)      //Label code     thisWeekDate.text! = "\(first day of current week) - \(last day of current week)"      //If i can change the first day of current week this weekly update code can be deleted     if components.weekday == 3 {          print("Hello Tuesday")         thisWeekDate.text! = "\(todayString) - \(nextString)"          UserDefaults.standard.set(todayString, forKey: "todayStringKey")         _ = UserDefaults.standard.object(forKey: "todayStringKey") as? String         UserDefaults.standard.set(nextString, forKey: "nextStringKey")         _ = UserDefaults.standard.object(forKey: "nextStringKey") as? String      } else {         print("It's not Tuesday")         let RetrivedDate_1 = UserDefaults.standard.object(forKey: "todayStringKey") as? String         let RetrivedDate_2 = UserDefaults.standard.object(forKey: "nextStringKey") as? String          if let date_1 = RetrivedDate_1, let date_2 = RetrivedDate_2 {             thisWeekDate.text! = "\(date_1) - \(date_2)"         }       } 

App Design Screenshot

回答1:

Create a custom Gregorian calendar and set the first weekday to Tuesday

var customCalendar = Calendar(identifier: .gregorian) customCalendar.firstWeekday = 3 

Then you can get the week interval with

var startDate = Date() var interval = TimeInterval() customCalendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: Date()) let endDate = startDate.addingTimeInterval(interval - 1) print(startDate, endDate) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!