Current Week Start and End Date

后端 未结 16 1394
轮回少年
轮回少年 2020-11-30 01:56

I want to get the current week start and end date and I also want to use the previous week start and end date and next week of the start and end date in current month.

16条回答
  •  余生分开走
    2020-11-30 02:19

    Swift 4 Solution

    I have figured out according to my requirement, where I have find out dates for following.

    1. Today
    
    2. Tomorrow 
    
    3. This Week 
    
    4. This Weekend 
    
    5. Next Week 
    
    6. Next Weekend
    

    So, I have created Date Extension to get Dates of Current Week and Next Week.

    CODE

    extension Date {
    
        func getWeekDates() -> (thisWeek:[Date],nextWeek:[Date]) {
            var tuple: (thisWeek:[Date],nextWeek:[Date])
            var arrThisWeek: [Date] = []
            for i in 0..<7 {
                arrThisWeek.append(Calendar.current.date(byAdding: .day, value: i, to: startOfWeek)!)
            }
            var arrNextWeek: [Date] = []
            for i in 1...7 {
                arrNextWeek.append(Calendar.current.date(byAdding: .day, value: i, to: arrThisWeek.last!)!)
            }
            tuple = (thisWeek: arrThisWeek,nextWeek: arrNextWeek)
            return tuple
        }
    
        var tomorrow: Date {
            return Calendar.current.date(byAdding: .day, value: 1, to: noon)!
        }
        var noon: Date {
            return Calendar.current.date(bySettingHour: 12, minute: 0, second: 0, of: self)!
        }
    
        var startOfWeek: Date {
            let gregorian = Calendar(identifier: .gregorian)
            let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self))
            return gregorian.date(byAdding: .day, value: 1, to: sunday!)!
        }
    
        func toDate(format: String) -> String {
            let formatter = DateFormatter()
            formatter.dateFormat = format
            return formatter.string(from: self)
        }
    }
    

    USAGE:

    let arrWeekDates = Date().getWeekDates() // Get dates of Current and Next week.
    let dateFormat = "MMM dd" // Date format
    let thisMon = arrWeekDates.thisWeek.first!.toDate(format: dateFormat)
    let thisSat = arrWeekDates.thisWeek[arrWeekDates.thisWeek.count - 2].toDate(format: dateFormat)
    let thisSun = arrWeekDates.thisWeek[arrWeekDates.thisWeek.count - 1].toDate(format: dateFormat)
    
    let nextMon = arrWeekDates.nextWeek.first!.toDate(format: dateFormat)
    let nextSat = arrWeekDates.nextWeek[arrWeekDates.nextWeek.count - 2].toDate(format: dateFormat)
    let nextSun = arrWeekDates.nextWeek[arrWeekDates.nextWeek.count - 1].toDate(format: dateFormat)
    
    print("Today: \(Date().toDate(format: dateFormat))") // Sep 26
    print("Tomorrow: \(Date().tomorrow.toDate(format: dateFormat))") // Sep 27
    print("This Week: \(thisMon) - \(thisSun)") // Sep 24 - Sep 30
    print("This Weekend: \(thisSat) - \(thisSun)") // Sep 29 - Sep 30
    print("Next Week: \(nextMon) - \(nextSun)") // Oct 01 - Oct 07
    print("Next Weekend: \(nextSat) - \(nextSun)") // Oct 06 - Oct 07
    

    You can modify Extension according to your need.

    Thanks!

提交回复
热议问题