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

时间:2017-08-22 06:26:47

标签: swift3 nsdate

如何在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)"
        }


    }

App Design屏幕截图

App design screenshot

1 个答案:

答案 0 :(得分:10)

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

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)