A cron expression parser that can take a cron string and give you the next run date and time specified in the string.
Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
pod 'SwiftCron'
Cartfile:
github "thecodedself/swiftcron" >= 0.4.5
Package.swift:
.Package(url: "https://github.com/TheCodedSelf/SwiftCron.git", majorVersion: 0)
Creating a cron expression is easy. Just invoke the initializer with the fields you want.
// Midnight every 8th day of the month
let myCronExpression = CronExpression(minute: "0", hour: "0", day: "8")
// Executes May 9th, 2024 at 11:30am
let anotherExpression = CronExpression(minute: "30", hour: "11", day: "9", month: "5", year: "2024")
// Every tuesday at 6:00pm
let everyTuesday = CronExpression(minute: "0", hour: "18", weekday: "3")
If you'd like to manually write the expression yourself, The cron format is as follows:
* * * * * *
(Minute) (Hour) (Day) (Month) (Weekday) (Year)
Initialize an instance of CronExpression with a string specifying the format.
// Every 11th May at midnight
let every11May = CronExpression(cronString: "0 0 11 5 * *")
Once you have your CronExpression, you can get the next time the cron will run. Call the getNextRunDate(_:) method and pass in the date to begin the search on.
// Every Friday 13th at midday
let myCronExpression = CronExpression(minute: "0", hour: "12", day: "13", weekday: "5")
let dateToStartSearchOn = NSDate()
let nextRunDate = myCronExpression.getNextRunDate(dateToStartSearchOn)
- Pull requests for bug fixes and new features are most welcome.
- Pull requests will only be merged once the Travis CI build passes.
- iOS 9.0 or greater
- Xcode 8.0 or greater
- Swift 3 or greater