简体   繁体   English

如何在Swift中将本周的第一天设置为星期二?

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

How to set the first day of current week to Tuesday in Swift 3? 如何在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 应用设计截图

应用设计截图

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM