Cron Expression: How to Schedule a Task to Run Daily at Midnight?

Cron Expression: How to Schedule a Task to Run Daily at Midnight?

Cron, also known as a time-based job scheduler, is a powerful tool that allows you to schedule tasks to run automatically at a designated time, date, or interval. With Cron, you can automate repetitive tasks, avoid making mistakes, and save time and effort. In this article, we’ll show you how to schedule a task to run every day at midnight (0:00) using Cron expression.

Understanding Cron Expression

Before we dive into the details of scheduling a task at midnight, let’s first understand Cron expression and how it works. A Cron expression consists of six fields that specify the task’s schedule: second, minute, hour, day of month, month, and day of week. Each field can have a specific value, range, or a list of values. You can also use special characters like * (wildcard) and ? (don’t care) to specify the values.

For example, the Cron expression 0 0 0 * * ? means to run the task at midnight every day of the month, every month of the year, and every day of the week. The 0 value for the second and minute fields indicates that the task should run at the beginning of the minute, while the 0 value for the hour field indicates that the task should run at midnight.

Scheduling a Task to Run at Midnight Using Cron Expression

Now that we know how Cron expression works, let’s schedule a task to run daily at midnight. Here’s a simple example in Java using the Quartz scheduler library:

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

public class CronExample {

    public static void main(String[] args) throws SchedulerException {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        JobDetail job = JobBuilder.newJob(MidnightJob.class)
                .withIdentity("midnightJob", "group1")

        CronTrigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("midnightTrigger", "group1")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 * * ?"))

        Date nextRunTime = scheduler.scheduleJob(job, trigger);
        System.out.println("Next run time: " + nextRunTime);

    public static class MidnightJob implements Job {
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("Task execution at midnight: " + new Date());

In this example, we create a JobDetail object that defines the task to be executed and a CronTrigger object that defines the schedule for the task. We set the Cron expression to 0 0 0 * * ?, which means to run the task at midnight every day. We then schedule the task using the scheduleJob() method of the Scheduler class and print the next run time to the console.

The MidnightJob class implements the Job interface and defines the code to be executed when the task runs. In this example, we simply print the current date and time to the console.

Testing the Scheduled Task

Now that we’ve scheduled the task to run at midnight, let’s test it to see if it works correctly. To do this, we’ll run the Java program we created in the previous section and wait for the task to execute at midnight. Here’s the output we should see:

Next run time: Thu Oct 14 00:00:00 GMT 2021
Task execution at midnight: Thu Oct 14 00:00:00 GMT 2021

The Next run time output shows the date and time when the task is scheduled to run next, which should be midnight on the current day. The Task execution at midnight output shows the date and time when the task actually runs, which should also be midnight on the current day. If we see these outputs, we can be sure that the task is running correctly.


In this article, we’ve learned how to use Cron expression to schedule a task to run every day at midnight. We’ve also seen how to implement this in Java using the Quartz scheduler library and test the scheduled task. Cron expression is a powerful tool that can help you automate repetitive tasks and save time and effort. With the knowledge you’ve gained from this article, you can now schedule tasks to run automatically and focus on more important tasks that require your attention.

Linux Login Logout Command
Linux login commandLinux logout commandLinux nologin commandLinux exit commandLinux sulogin commandLinux rlogin commandLinux poweroff commandLinux ctrlaltdel CommandLinux shutdown commandLinux halt commandLinux reboot commandLinux init commandLinux runlevel commandLinux telinit command
Linux File Management Command
Linux cat commandLinux tac commandLinux nl commandLinux more commandLinux less commandLinux head commandLinux tail commandLinux rev commandLinux fold commandLinux fmt commandLinux expand commandLinux pr commandLinux sort commandLinux uniq commandLinux cut commandLinux comm commandLinux diff commandLinux join commandLinux diff3 commandLinux cmp commandLinux colrm commandLinux paste commandLinux mkdir commandLinux tr commandLinux split commandLinux csplit commandLinux tee commandLinux unexpand commandLinux patch commandLinux awk commandLinux sed commandLinux od commandLinux pwd commandLinux cd commandLinux ls commandLinux dir commandLinux dirs commandLinux touch commandLinux rmdir commandLinux cp commandLinux mv commandLinux rm commandLinux install commandLinux tmpwatch commandLinux file commandLinux du commandLinux wc commandLinux tree commandLinux cksum commandLinux md5sum commandLinux sum commandLinux dirname commandLinux mkfifo Command
Cron Expressions
Cron Expression to Run Every Day at 12 PMUnderstanding Vue Cron ExpressionsUnderstanding JS Cron ExpressionsA Comprehensive Guide to Cron Expressions for Scheduled TasksUnderstanding Linux Cron ExpressionsUnderstanding Quartz Cron ExpressionsCron ExpressionCron Time ExpressionCron Expression ParsingCron Expression: Executing a Task Every SecondCron Expression for Every Minute ExecutionCron Expression to Execute Every 10 MinutesCron Expression: Executing Every HourCron Expression to Execute Once a YearCron Expression: How to Schedule a Task to Run Daily at Midnight?