Latest 0.5.0
License MIT
Platforms ios 9.0

codecov CocoaPod Version

A cron expression parser that can take a cron string and give you the next run date and time specified in the string.




pod 'SwiftCron'



github "thecodedself/swiftcron" >= 0.4.5

Swift Package Manager


.Package(url: "", majorVersion: 0)


  • iOS 9.0 or greater
  • Xcode 8.0 or greater
  • Swift 3 or greater


Create a Cron Expression

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: "2")

Manually create an expression

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 * *")

Get the next run date

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)
Custom timezones

By default SwiftCron uses the system’s current timezone to calculate the next run date. To override this behavior, just pass the timezone you want into CronExpression.getNextRunDateFromNow(adjustingForTimeZone:) or CronExpression.getNextRunDate(_:adjustingForTimeZone:) methods.

// Every 12th September at 10 AM
let cronExpression = CronExpression(cronString: "0 10 12 9 * *")

// Calculate the next run date as if the cron expression was created in the
// America/Los_Angeles timezone
let losAngeles = TimeZone(identifier: "America/Los_Angeles")!
let nextRun = cronExpression.getNextRunDateFromNow(adjustingForTimeZone: losAngeles)


  • Pull requests for bug fixes and new features are most welcome.
  • Pull requests will only be merged once the Travis CI build passes.

Latest podspec

    "name": "SwiftCron",
    "version": "0.5.0",
    "summary": "Cron expression parser.",
    "description": "A cron expression parser written in Swift that can take a cron string and give you the next run date and time specified in the string.",
    "homepage": "",
    "license": "MIT",
    "authors": {
        "Keegan Rush": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.5.0"
    "social_media_url": "",
    "platforms": {
        "ios": "9.0"
    "source_files": "Sources/**/*"

Pin It on Pinterest

Share This