Skip to content

Instantly share code, notes, and snippets.

@Coder-ACJHP
Last active August 2, 2018 06:36
Show Gist options
  • Save Coder-ACJHP/f232fbb86c53a462b1fada826fe783f8 to your computer and use it in GitHub Desktop.
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)
// 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