Skip to content
Quartz100% Client-Side

Cron Expression for Last Day of Month

0 0 12 L * ?At 12:00 PM, on the last day of the month

The Quartz cron expression "0 0 12 L * ?" runs a task last day of month. Preview the next run times in your timezone, read the plain-English translation, and copy ready-to-paste snippets for crontab, Node.js, GitHub Actions, and AWS EventBridge.

Live playground

  • Sec0
  • Min0
  • Hour12
  • DOML
  • Month*
  • DOW?

At 12:00 PM, on the last day of the month

Quartz · evaluated in UTC

24-hour view

Hover a highlighted hour for precise timestamps. Showing the next 50 executions.

Upcoming runs

Timezone

Runs are simulated in the selected IANA timezone. Auto-detected from your browser on first load.

Field breakdown

How each field of 0 0 12 L * ? is interpreted in the Quartz format.

Field breakdown of 0 0 12 L * ?
FieldValueAllowedStatus
Seconds00-59Valid
Minute00-59Valid
Hour120-23Valid
Day of MonthL1-31, L (last day), W (nearest weekday)Valid
Month*1-12 or JAN-DECValid
Day of Week?1-7 or SUN-SAT (1 = SUN)Valid

Use “0 0 12 L * ?” in real code

Copy-paste configurations for the most common schedulers, converted to each platform’s dialect where needed.

import cron from 'node-cron';

cron.schedule('0 0 12 L * ?', () => {
  console.log('Running task...');
});

Frequently asked questions

What does the cron expression "0 0 12 L * ?" mean?

"0 0 12 L * ?" is a Quartz expression that means: At 12:00 PM, on the last day of the month. It contains 6 fields — Seconds (0), Minute (0), Hour (12), Day of Month (L), Month (*), Day of Week (?) — and works in any scheduler that accepts the Quartz format.

How does "0 0 12 L * ?" behave in UTC versus local time?

Quartz evaluates the trigger in the timezone configured on the scheduler or on the individual trigger's timeZone property, defaulting to the JVM's default timezone. Spring's @Scheduled uses the server default unless you set the zone attribute per task.

Can I combine "0 0 12 L * ?" with holidays or blackout dates?

Standard cron has no holiday awareness. The common pattern is to keep the schedule as-is and guard the job: check a holiday calendar when the run starts and exit early on excluded days. That keeps the schedule declarative while your code owns the policy.

About the “0 0 12 L * ?” schedule

0 0 12 L * ? is the Quartz way to say “At 12:00 PM, on the last day of the month”. The simulator above evaluates it entirely in your browser — the timeline, the next-run table, and the timezone switcher all run client-side, so you can paste production schedules without them ever leaving your machine.

Every page in this directory follows the same structure: a plain-English translation, a per-field breakdown, platform-specific snippets, and a timezone-aware simulator. Move between the related intervals below to compare dialects, and validate one final time in the simulator with your own timezone before shipping.

Adjacent intervals and the same schedules expressed for other platforms.