1. Go to this page and download the library: Download geoffreyrose/useful-dates library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
geoffreyrose / useful-dates example snippets
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now());
// Add a simple date
$usefulDates->addDate(name: "Patrick Star's Birthday", date: Carbon::createFromFormat('Y-m-d', '1999-08-17'));
// Get upcoming dates
$dates = $usefulDates->getUsefulDatesInDays(30);
use UsefulDates\Facades\UsefulDates;
$usefulDates = UsefulDates::setDate(Carbon::now());
namespace App\Dates;
use Carbon\Carbon;
use UsefulDates\Abstracts\UsefulDateAbstract;
use UsefulDates\Enums\RepeatFrequency;
class AprilFools extends UsefulDateAbstract
{
public function __construct()
{
$this->name = "April Fools' Day";
$this->start_date = Carbon::createFromFormat('Y-m-d', '1582-04-01');
$this->is_repeated = true;
$this->repeat_frequency = RepeatFrequency::YEARLY;
}
public function date(): Carbon
{
return Carbon::createFromFormat('Y-m-d', "{$this->currentDate->year}-04-01");
}
}
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now());
$usefulDates->add(\App\Dates\AprilFools::class);
$nextDates = $usefulDates->getNextUsefulDates(5);
// Returns the next 5 occurrences of April Fools' Day
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now());
// Strings and DateTime also work
$usefulDates->setDate('2025-02-01');
$usefulDates->setDate(new \DateTime('2025-03-01 08:00'));
$usefulDates->setDate(Carbon::now());
if ($usefulDates->isUsefulDate()) {
// today matches a useful date
}
$someDate = Carbon::create(2025, 12, 25);
$isUseful = $usefulDates->isUsefulDate($someDate);
$dates = $usefulDates->getUsefulDate(Carbon::create(2025, 1, 1));
foreach ($dates as $date) {
echo $date->name . ' occurs on ' . $date->usefulDate();
}
// Next 30 days from current context
$usefulDates->setDate(Carbon::now());
$next30 = $usefulDates->getUsefulDatesInDays(30);
// From a specific start date
$start = Carbon::create(2025, 1, 1);
$dates = $usefulDates->getUsefulDatesInDays(60, $start);
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::create(2025, 1, 1));
$usefulDates->addDate("Patrick Star's Birthday", Carbon::createFromFormat('Y-m-d', '1999-08-17'));
$usefulDates->addDate('April Fools Day', Carbon::createFromFormat('Y-m-d', '1582-04-01'));
$dates = $usefulDates->getUsefulDatesInYears(10);
foreach ($dates as $date) {
echo $date->name . ' - ' . $date->usefulDate()->toDateString() . ' (' . $date->daysAway() . ' days away)';
}
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now());
$usefulDates->addExtension(\UsefulDatesUsHolidays\UsefulDatesUsHolidaysExtension::class);
namespace App\Extensions;
use App\Dates\AprilFools;
use UsefulDates\Abstracts\UsefulDatesExtensionAbstract;
class MyHolidays extends UsefulDatesExtensionAbstract
{
public static string $name = 'My Holidays';
public static string $description = 'Custom holiday collection';
public static bool $hasMethods = true;
// Return array of UsefulDate class names
public static function usefulDates(): array
{
return [
AprilFools::class,
];
}
// Optional: Add custom methods
public function methods(): array
{
return [
'isDecember' => [$this, 'isDecember'],
];
}
public function isDecember(): bool
{
return $this->usefulDates->date->month === 12;
}
}
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now()->addMonths(2));
$usefulDates->addExtension(\App\Extensions\MyHolidays::class);
if ($usefulDates->isDecember()) {
echo "It's December!";
}
namespace App;
use UsefulDates\UsefulDates;
use UsefulDatesUsHolidays\UsefulDatesUsHolidaysExtension;
use Carbon\Carbon;
/**
* @mixin UsefulDatesUsHolidaysExtension
*/
class MyUsefulDates extends UsefulDates
{
public function init(Carbon $date): self
{
$this->setDate($date);
$this->addExtension(UsefulDatesUsHolidaysExtension::class);
return $this;
}
}
$dates = new \App\MyUsefulDates();
$dates->init(Carbon::now());
use UsefulDates\UsefulDates;
use Carbon\Carbon;
$usefulDates = new UsefulDates();
$usefulDates->setDate(Carbon::now());
$usefulDates->addExtension(\UsefulDatesUsHolidays\UsHolidaysExtension::class);
// Get federal holidays established before 1900
$federalHolidays = $usefulDates->getUsefulDatesInDays(100, filters: [
[
'property' => 'is_federal_holiday',
'operator' => '=',
'value' => true,
],
[
'property' => 'federal_holiday_start_year',
'operator' => '<=',
'value' => 1900,
],
]);