HTTPfy

Every hour at half past

At minute 30 of every hour (00:30, 01:30, ...): 24 runs a day.

8,760runs in the next 365 days
168runs per week
1 hourbetween every run
02:30next run, Wed 11 Nov UTC

What it is used for

An hourly job deliberately kept away from the busy top of the hour, or one that must run after another hourly job at :00 has finished.

Field by field

FieldValueMatches
Minute3030
Hour*every value
Day of month*every value
Month*every value
Day of week*every value
30 * * * * /path/to/job

Next 10 run times

Computed when this page loaded (2026-11-11 02:24 UTC), assuming the scheduler runs in UTC.

#UTCYour local time
1Wed 2026-11-11 02:30
2Wed 2026-11-11 03:30
3Wed 2026-11-11 04:30
4Wed 2026-11-11 05:30
5Wed 2026-11-11 06:30
6Wed 2026-11-11 07:30
7Wed 2026-11-11 08:30
8Wed 2026-11-11 09:30
9Wed 2026-11-11 10:30
10Wed 2026-11-11 11:30

Things to watch with this schedule

  • This is not every 30 minutes; that is */30 * * * *.

Kubernetes CronJob

Kubernetes uses the same five fields. Set spec.timeZone (stable since Kubernetes 1.27), otherwise the schedule follows the time zone of kube-controller-manager.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: every-hour-at-half-past
spec:
  schedule: "30 * * * *"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid
  startingDeadlineSeconds: 300
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: debian:bookworm-slim
              command: ["/bin/sh", "-c", "/app/run-job.sh"]

GitHub Actions

Workflow schedules use five-field cron in UTC and run only from the default branch.

on:
  schedule:
    - cron: '30 * * * *'   # UTC

jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./run-job.sh

systemd timer

The equivalent OnCalendar= value is *-*-* *:30:00. Check it with systemd-analyze calendar '*-*-* *:30:00', which prints the next elapse time. Persistent=true runs a missed job after downtime, which classic cron never does.

[Unit]
Description=Every hour at half past

[Timer]
OnCalendar=*-*-* *:30:00
Persistent=true

[Install]
WantedBy=timers.target

AWS EventBridge

EventBridge rules take six fields (minute, hour, day-of-month, month, day-of-week, year) in UTC; EventBridge Scheduler can use a time zone. One of day-of-month and day-of-week must be ?, and day-of-week runs 1-7 from Sunday, so names are used here.

cron(30 * * * ? *)

Quartz Scheduler (Java)

Quartz adds a leading seconds field and needs ? in either day field; days of the week are 1 (SUN) to 7 (SAT).

0 30 * * * ?

Spring's @Scheduled(cron = ...) also uses six fields, but numbers days of the week 0-7 with Sunday as 0 or 7, like Unix cron; the names shown above work in both.

Related schedules