Home › Convert › node-cron to Google Cloud Scheduler
Convert node-cron cron to Google Cloud Scheduler
node-cron expressions look similar to Google Cloud Scheduler, but the differences matter. Paste yours below; the result is checked against the original run times.
What changes from node-cron to Google Cloud Scheduler
- Google Cloud Scheduler has no seconds field, so a schedule that fires on specific seconds cannot be converted exactly. The seconds value is dropped and flagged.
- node-cron requires both day fields to match; Google Cloud Scheduler fires when either does. Schedules that restrict both are flagged.
- Google Cloud Scheduler has no
L,Wor#symbols. Schedules like "last day of the month" cannot be converted and are refused rather than silently changed.
Worked examples
| Schedule | node-cron | Google Cloud Scheduler |
|---|---|---|
| every minute | * * * * * | * * * * * |
| every 5 minutes | */5 * * * * | */5 * * * * |
| every 10 minutes | */10 * * * * | */10 * * * * |
| every 15 minutes | */15 * * * * | */15 * * * * |
| every 30 minutes | */30 * * * * | */30 * * * * |
| every hour | 0 * * * * | 0 * * * * |
| every 2 hours | 0 */2 * * * | 0 */2 * * * |
| every 3 hours | 0 */3 * * * | 0 */3 * * * |
Conversions that come with a warning
- on the first Monday of every month at 9:00 AM:
0 9 1-7 * 1→0 9 1-7 * 1. node-cron (5-6 field) requires day-of-month AND day-of-week to match, but Google Cloud Scheduler fires when EITHER matches, so the meaning changes. Keep one day field as * and check the other date inside the job. - every 10 seconds:
*/10 * * * * *→* * * * *. Google Cloud Scheduler has no seconds field; the seconds value "*/10" was dropped. - every 30 seconds:
*/30 * * * * *→* * * * *. Google Cloud Scheduler has no seconds field; the seconds value "*/30" was dropped.
What cannot be converted
These common node-cron schedules have no equivalent in Google Cloud Scheduler. The converter refuses them instead of guessing.
- on the last day of every month:
0 0 L * *. This schedule cannot be expressed in Google Cloud Scheduler: "L" is not a valid dom value. - on the last Friday of every month at noon:
0 12 * * 5L. This schedule cannot be expressed in Google Cloud Scheduler: "5L" is not a valid dow value.
Field layout and time zones
second (0-59), minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7, 0 and 7 = Sunday).
node-cron uses the server time zone unless you pass { timezone: "Asia/Kolkata" }. Its documentation advises timezone: "UTC" for jobs that must not skip or repeat when clocks change.
minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7, 0 and 7 = Sunday).
Cloud Scheduler takes any tz database zone (default UTC) and runs on wall-clock time, so daylight saving can make jobs run or not run unexpectedly. Google recommends UTC to avoid that.
Go the other way
Convert Google Cloud Scheduler to node-cron, or open the node-cron builder or the Google Cloud Scheduler builder.
Frequently asked questions
How do I convert a node-cron cron expression to Google Cloud Scheduler?
Paste it into the converter above with node-cron as the source and Google Cloud Scheduler as the target. For example, * * * * * becomes * * * * *.
Is every node-cron expression convertible to Google Cloud Scheduler?
No. Out of 32 common schedules, 2 cannot be expressed in Google Cloud Scheduler: on the last day of every month; on the last Friday of every month at noon.
Does Google Cloud Scheduler run in the same time zone as node-cron?
Not necessarily. Conversion changes the syntax, not the time zone. Check where each system evaluates the schedule before you rely on the same clock times.