【问题标题】:How to set the first day of current week to Tuesday in Swift?如何在Swift中将本周的第一天设置为星期二?
【发布时间】:2017-08-22 06:26:46
【问题描述】:

如何在 Swift 3 中将本周的第一天设置为星期二?时间表将在每个星期二更新,因此第一天必须从星期二开始。

然后显示在标签上:

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

完整代码。

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


    }

应用设计截图

【问题讨论】:

    标签: swift3 nsdate


    【解决方案1】:

    创建自定义公历并将第一个工作日设置为星期二

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

    然后你可以得到周间隔

    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)
    

    【讨论】:

    • 如何获取从星期一开始的本周日期数组?
    • @LeeProbert 将firstWeekday 设置为2,创建一个数组var dateArray = [Date](),然后使用循环for i in 0..<7 { let date = customCalendar.date(byAdding: .day, value: i, to: startDate); dateArray.append(date) }。
    • 是的,firstWeekday = 2 是星期一。
    • @CristianMoisei 问题是要告诉日历在不同的工作日开始一周。
    • 工作日符号的顺序是固定的,对应于它们的整数表示。
    猜你喜欢
    • 2018-01-29
    • 2015-12-11
    • 2013-11-30
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多