Last active
June 27, 2018 09:35
-
-
Save priyans05/d03782c4536e1a9aef0ec32dae2599aa to your computer and use it in GitHub Desktop.
Swift Dates Extension to create String Array from date to date
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
extension Date { | |
// Give startDate and endDate -> reurns an array of strings of dates inbetween to use in URL or anyother places where you can input String. | |
static func uppendDatesBetweenInterval(_ startDate: Date, _ endDate: Date) -> [String]{ | |
var dates = [String]() | |
var startDate = startDate | |
let calendar = Calendar.current | |
let fmt = DateFormatter() | |
fmt.dateFormat = "yyyy-MM-dd" | |
while startDate >= endDate { | |
// print(fmt.string(from: startDate)) | |
dates.append(fmt.string(from: startDate)) | |
startDate = calendar.date(byAdding: .day, value: -1, to: startDate)! | |
} | |
return dates | |
} | |
//Converts date into String. | |
static func dateFromString(_ dateString: String) -> Date { | |
let dateFormatter = DateFormatter() | |
dateFormatter.dateFormat = "yyyy-MM-dd" | |
return dateFormatter.date(from: dateString)! | |
} | |
//Will return datesArray for the past number of days | |
func allDatesFromTodayTillTheCountOf(numberOfDays: Int) -> [Date] { | |
var today = self | |
var datesForTheCountOfDays: [Date] = [] | |
let calendar = Calendar.current | |
let endDate = calendar.date(byAdding: .day, value: -numberOfDays, to: today) | |
if let endDate = endDate { | |
while today >= endDate { | |
datesForTheCountOfDays.append(today) | |
today = calendar.date(byAdding: .day, value: -1, to: today)! | |
} | |
} | |
return datesForTheCountOfDays | |
} | |
//returns array of dates by passing date you want from. | |
func allDatesTill(date: Date) -> [Date] { | |
var today = self | |
var allDates: [Date] = [] | |
let calendar = Calendar.current | |
let endDate = calendar.date(byAdding: .day, value: -1, to: date) | |
if let endDate = endDate { | |
while today >= endDate { | |
allDates.append(today) | |
today = calendar.date(byAdding: .day, value: -1, to: today)! | |
} | |
} | |
return allDates | |
} | |
//returns an array of String - pass StartDate and numberOfDays you want in an array | |
func returnArrayOfDateStringsBetween(_ startDate: Date, to numberOfDays: Int) -> [String] { | |
var dates = [String]() | |
var startDate = startDate | |
let calendar = Calendar.current | |
let formatter = DateFormatter() | |
formatter.dateFormat = "yyyy-MM-dd" | |
let endDate = calendar.date(byAdding: .day, value: -numberOfDays, to: startDate) | |
if let endDate = endDate { | |
while startDate >= endDate { | |
dates.append(formatter.string(from: startDate)) | |
startDate = calendar.date(byAdding: .day, value: -1, to: startDate)! | |
} | |
} | |
return dates | |
} | |
} | |
var dates: [String]! | |
let today = Date() | |
today.allDatesFromTodayTillTheCountOf(numberOfDays: 10) | |
//["Jun 26, 2018 at 10:51 AM", "Jun 25, 2018 at 10:51 AM", "Jun 24, 2018 at 10:51 AM", "Jun 23, 2018 at 10:51 AM", "Jun 22, 2018 at 10:51 AM", "Jun 21, 2018 at 10:51 AM", "Jun 20, 2018 at 10:51 AM", "Jun 19, 2018 at 10:51 AM", "Jun 18, 2018 at 10:51 AM", "Jun 17, 2018 at 10:51 AM", "Jun 16, 2018 at 10:51 AM"] | |
let formatter = DateFormatter() | |
formatter.dateFormat = "yyyy/MM/dd" | |
let someDate = formatter.date(from: "2018/06/15") | |
today.allDatesTill(date: someDate!) | |
//["Jun 26, 2018 at 10:51 AM", "Jun 25, 2018 at 10:51 AM", "Jun 24, 2018 at 10:51 AM", "Jun 23, 2018 at 10:51 AM", "Jun 22, 2018 at 10:51 AM", "Jun 21, 2018 at 10:51 AM", "Jun 20, 2018 at 10:51 AM", "Jun 19, 2018 at 10:51 AM", "Jun 18, 2018 at 10:51 AM", "Jun 17, 2018 at 10:51 AM", "Jun 16, 2018 at 10:51 AM", "Jun 15, 2018 at 10:51 AM", "Jun 14, 2018 at 10:51 AM"] | |
var date = Date() | |
today.returnArrayOfDateStringsBetween(date, to: 10) | |
//["2018-06-26", "2018-06-25", "2018-06-24", "2018-06-23", "2018-06-22", "2018-06-21", "2018-06-20", "2018-06-19", "2018-06-18", "2018-06-17", "2018-06-16"] | |
dates = Date.uppendDatesBetweenInterval(Date.dateFromString("2018-06-25"), Date.dateFromString("2018-06-20")) | |
print(dates) | |
//(["2018-06-25", "2018-06-24", "2018-06-23", "2018-06-22", "2018-06-21", "2018-06-20"]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment