Common IST times as AWS cron
| IST time | UTC | Expression (daily) |
|---|---|---|
| 5:30 AM | 00:00 | cron(0 0 * * ? *) |
| 9:00 AM | 03:30 | cron(30 3 * * ? *) |
| 12:00 PM | 06:30 | cron(30 6 * * ? *) |
| 6:00 PM | 12:30 | cron(30 12 * * ? *) |
| 11:00 PM | 17:30 | cron(30 17 * * ? *) |
| 2:00 AM (next day UTC −1) | 20:30 prev | cron(30 20 * * ? *) |
AWS cron fields
| Field | Values | Wildcards |
|---|---|---|
| Minutes | 0–59 | , - * / |
| Hours | 0–23 | , - * / |
| Day-of-month | 1–31 | , - * ? / L W |
| Month | 1–12 or JAN–DEC | , - * / |
| Day-of-week | 1–7 or SUN–SAT (1 = SUN) | , - * ? / L # |
| Year | 1970–2199 | , - * / |
You cannot use * in both Day-of-month and Day-of-week — one of them must be ?.
The midnight-crossing trap
Shifting IST back to UTC subtracts 5 hours 30 minutes. Any IST time before 5:30 AM lands on the previous UTC day. So "every Monday 4:00 AM IST" is "every Sunday 22:30 UTC" — the day-of-week in your cron must be Sunday (1), not Monday. This converter accounts for that when it lists the next runs.
EventBridge Scheduler vs cron() rules
The classic EventBridge/CloudWatch rule cron() and rate() schedules are UTC only. Amazon EventBridge Scheduler (the newer service) lets you set ScheduleExpressionTimezone to Asia/Kolkata, so you can write the IST clock time directly. If you are on Scheduler, you do not need to pre-shift to UTC.
Questions
Is EventBridge cron UTC?
Yes, always. Classic cron() rules have no time-zone option; only EventBridge Scheduler does.
AWS vs Unix cron?
AWS has 6 fields (adds Year), requires ? in one of the day fields, and uses 1–7 for day-of-week with 1 = Sunday.
9 AM IST expression?
cron(30 3 * * ? *) — 3:30 AM UTC.
DST?
India has no DST. IST is a fixed UTC+5:30 year-round.