Skip to content

Instantly share code, notes, and snippets.

@paigeshin
Forked from nbasham/Data+Extensions.swift
Created October 21, 2022 14:40
Show Gist options
  • Save paigeshin/bf64b93bbadfea6ded1808f0e37bee4c to your computer and use it in GitHub Desktop.
Save paigeshin/bf64b93bbadfea6ded1808f0e37bee4c to your computer and use it in GitHub Desktop.
Get a random date between two values. Swift 4.2+ uses Random(in:).
import Foundation
extension Date {
static func randomBetween(start: String, end: String, format: String = "yyyy-MM-dd") -> String {
let date1 = Date.parse(start, format: format)
let date2 = Date.parse(end, format: format)
return Date.randomBetween(start: date1, end: date2).dateString(format)
}
static func randomBetween(start: Date, end: Date) -> Date {
var date1 = start
var date2 = end
if date2 < date1 {
let temp = date1
date1 = date2
date2 = temp
}
let span = TimeInterval.random(in: date1.timeIntervalSinceNow...date2.timeIntervalSinceNow)
return Date(timeIntervalSinceNow: span)
}
func dateString(_ format: String = "yyyy-MM-dd") -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
static func parse(_ string: String, format: String = "yyyy-MM-dd") -> Date {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = NSTimeZone.default
dateFormatter.dateFormat = format
let date = dateFormatter.date(from: string)!
return date
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment