Last active
August 2, 2018 06:36
-
-
Save Coder-ACJHP/f232fbb86c53a462b1fada826fe783f8 to your computer and use it in GitHub Desktop.
Date extension that help us to get day of week, day number of week, date list as date etc.. (between two dates)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// DateHelper.swift | |
// | |
// Created by Coder ACJHP on 2.08.2018. | |
// Copyright © 2018 Coder ACJHP. All rights reserved. | |
// | |
import Foundation | |
extension Date { | |
func dayNumberOfWeek() -> Int? { | |
return Calendar.current.dateComponents([.weekday], from: self).weekday | |
} | |
func dayOfWeek() -> String? { | |
let dateFormatter = DateFormatter() | |
dateFormatter.dateFormat = "EEEE" | |
return dateFormatter.string(from: self).capitalized | |
} | |
public func getDateListBetweenTwoDates(fromDate: String = "2017-01-01", toDate: String = "2018-01-01") -> [Date] { | |
var dateList : [Date] = [] | |
var dateFrom = Date() // First date | |
var dateTo = Date() // Last date | |
let fmt = DateFormatter() | |
fmt.dateFormat = "yyyy-MM-dd" | |
dateFrom = fmt.date(from: fromDate)! | |
dateTo = fmt.date(from: toDate)! | |
while dateFrom < dateTo { | |
dateList.append(dateFrom) | |
dateFrom = Calendar.current.date(byAdding: .day, value: 1, to: dateFrom)! | |
} | |
return dateList | |
} | |
public func getDayOfWeekListBetweenToDates(fromDate: String = "2017-01-01", toDate: String = "2018-01-01") -> [String] { | |
var dayOfWeekList : [String] = [] | |
var dateFrom = Date() // First date | |
var dateTo = Date() // Last date | |
let fmt = DateFormatter() | |
fmt.dateFormat = "yyyy-MM-dd" | |
dateFrom = fmt.date(from: fromDate)! | |
dateTo = fmt.date(from: toDate)! | |
while dateFrom < dateTo { | |
dayOfWeekList.append(dateFrom.dayOfWeek()!) | |
dateFrom = Calendar.current.date(byAdding: .day, value: 1, to: dateFrom)! | |
} | |
return dayOfWeekList | |
} | |
public func getNumberOfWeekListBetweenToDates(fromDate: String = "2017-01-01", toDate: String = "2018-01-01") -> [Int] { | |
var numberOfWeekList : [Int] = [] | |
var dateFrom = Date() // First date | |
var dateTo = Date() // Last date | |
let fmt = DateFormatter() | |
fmt.dateFormat = "yyyy-MM-dd" | |
dateFrom = fmt.date(from: fromDate)! | |
dateTo = fmt.date(from: toDate)! | |
while dateFrom < dateTo { | |
numberOfWeekList.append(dateFrom.dayNumberOfWeek()!) | |
dateFrom = Calendar.current.date(byAdding: .day, value: 1, to: dateFrom)! | |
} | |
return numberOfWeekList | |
} | |
func arrayOfDatesWithPattern(pattern: String = "EEE") -> NSArray { | |
let numberOfDays: Int = 31 | |
let startDate = Date() | |
let formatter: DateFormatter = DateFormatter() | |
formatter.dateFormat = pattern | |
let calendar = Calendar.current | |
var offset = DateComponents() | |
var dates: [Any] = [formatter.string(from: startDate)] | |
for i in 1..<numberOfDays { | |
offset.day = i | |
let nextDay: Date? = calendar.date(byAdding: offset, to: startDate) | |
let nextDayString = formatter.string(from: nextDay!) | |
dates.append(nextDayString) | |
} | |
return dates as NSArray | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment