Devtools.supstudio.in

Tools/Cron

GitHub Actions cron

GitHub Actions scheduled workflows use POSIX cron in the on.schedule list. Every expression is evaluated in UTC — there is no timezone field. Runs can be delayed by several minutes when GitHub is busy, so do not use Actions cron as a hard SLA.

Field format

minute hour day-of-month month day-of-week (5 fields, UTC)

Open the builder

Gotchas

What timezone does GitHub Actions cron use?
UTC only. Convert your local hour before you paste the expression. A 9am India job is 3:30 UTC (or 4:30 in summer if you meant IST without DST).
Why must the cron string be quoted?
YAML treats * as an alias. Write cron: '0 9 * * 1' with quotes so the stars survive parsing.
How often can a workflow run?
The shortest practical schedule is every 5 minutes. GitHub may skip or delay scheduled jobs on free plans during peak load.

Examples

Snippet for GitHub Actions

GitHub Actions

UTC only. Quote the expression so YAML keeps the stars.

on:
  schedule:
    - cron: '0 9 * * 1'

Kubernetes

CronJob spec.schedule. Kubernetes uses the timezone of the kube-controller-manager unless you set .spec.timeZone.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: job
spec:
  schedule: "0 9 * * 1"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: busybox
              args: ["echo", "run"]

AWS EventBridge

Six fields: minutes hours day-of-month month day-of-week year. Use ? in either day-of-month or day-of-week.

cron(0 9 ? * 1 *)

Quartz

Quartz is seconds-first (6 or 7 fields). Day-of-week names are MON, TUE, … and ? is required in one of the day fields.

0 0 9 * * 1

Vercel Cron

{
  "crons": [
    {
      "path": "/api/cron",
      "schedule": "0 9 * * 1"
    }
  ]
}

crontab

0 9 * * 1 /usr/local/bin/job

node-cron

import cron from 'node-cron';

cron.schedule('0 9 * * 1', () => {
  // job
});

Spring @Scheduled

Spring uses 6 fields by default (seconds first) unless you set spring.task.scheduling.cron.expression.

@Scheduled(cron = "0 0 9 * * 1")
public void run() {
    // job
}

Useful schedules

Other platforms