News

Time Interval Helpers in Laravel 12.40

Published
Time Interval Helpers in Laravel 12.40 image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released version 12.40.0 this week with new time helper functions, the ability to schedule tasks to run on specific days, pausing and resuming queues, and more.

Time Helpers

Taylor Otwell added time helper functions to the Illuminate\Support namespace and new methods on the support Carbon class:

use Illuminate\Support\Carbon;
 
// Plus and minus methods support years, months, weeks,
// days, hours, minutes, seconds, microseconds.
Carbon::now()->plus(years: 1, days: 5);
 
Carbon::now()->minus(weeks: 4);

The support namespace has the following helpers, which return a CarbonInterval instance:

use function Illuminate\Support\{seconds, minutes, hours, days, years};
 
seconds(5);
minutes(5);
hours(1);
days(30);
years(1);
 
/*
Carbon\CarbonInterval {#1277
interval: + 1y,
}
*/

Here are a few examples of how you might use the support Carbon methods and helper functions:

use function Illuminate\Support\minutes;
 
Cache::put('name', 'Taylor', minutes(5));
 
Invitation::create([
'expires_at' => now()->plus(weeks: 1),
]);

Schedule Tasks on Specific Days

Yousef Kadah contributed a daysOfMonth() method to run tasks on multiple, specific days of the month:

// Variadic syntax
$schedule->command('generate-reports')
->daysOfMonth(1, 10, 20);
 
// Array syntax
$schedule->command('generate-reports')
->daysOfMonth([1, 10, 20]);

Encoding Validation Rule

Jamie York contributed an encoding validation rule that checks the contents of a file and ensures it matches a specific encoding:

use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rules\File;
 
Validator::validate($input, [
'attachment' => [
'required',
File::types(['csv'])->encoding('utf-8'),
],
]);

Pause/Resume a Queue

Yousef Kadah contributed the ability to pause and resume queues using a command. The queue argument is the connection and queue name. For example, the following is the database connection and default is the queue name:

php artisan queue:pause database:default
 
php artisan queue:continue database:default

See the documentation for details on pausing and resuming queue workers.

Release notes

You can see the complete list of new features and updates below and the diff between 12.39.0 and 12.40.0 on GitHub. The following release notes are directly from the changelog:

v12.40.0

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Laravel Starter Kits Now Ship with Vite+ image

Laravel Starter Kits Now Ship with Vite+

Read article
Pessimistic Locking in Laravel Eloquent with refreshForUpdate() image

Pessimistic Locking in Laravel Eloquent with refreshForUpdate()

Read article
Mask Query Bindings in Laravel Exception Messages image

Mask Query Bindings in Laravel Exception Messages

Read article
whereBinary(): Case-Sensitive MySQL Queries in Laravel image

whereBinary(): Case-Sensitive MySQL Queries in Laravel

Read article
Compile PHP to Native Binaries with TypePHP image

Compile PHP to Native Binaries with TypePHP

Read article
State of Laravel 2026 Survey Is Now Open image

State of Laravel 2026 Survey Is Now Open

Read article