I'm trying to retrieve all of the Mondays and Tuesdays and the last Sunday of every month with Carbon since a specific date in the past. Then I would like to loop through the array of days and create an even for that day. I'm trying to figure out how to do that?
// Get all dates of Mondays, Tuesdays, last Sundays of every Month since the first Monday of January of 2000.
$eventDates = Carbon::parse('first Monday of January 2000');
$i = 0;
while($eventDates->lt(Carbon::now()->subDay(14))) {
$event = factory(Event::class)->create([
'date' => $eventDate,
]);
}
from({length: moment(). daysInMonth()}, (x, i) => moment(). startOf('month'). add(i, 'days'));
To get the year, month and day from a date object: Call the getMonth() method to get an integer from 0 (January) to 11 (December). Call the getDate() method to get the day of the month.
JavaScript getDate() Method: This method returns the number of days in a month (from 1 to 31) for the defined date. Return value: It returns a number, from 1 to 31, representing the day of the month.
I'm sure there's a more performant way of doing this but I'm not that familiar with Carbon. Here, you'll get 3 arrays, each with each Monday, Tuesdays and last Sundays of each month since 2000. You can then iterate over each DatePeriod
, or merge the intervals to get one big DatePeriod
, to create your events.
<?php
use Carbon\Carbon;
use Carbon\CarbonInterval;
$monday = Carbon::parse('First Monday of January 2000');
$tuesday = Carbon::parse('First Tuesday of January 2000');
$sunday = Carbon::parse('Last Sunday of January 2000');
$now = Carbon::now();
$mondays = new DatePeriod(
$monday,
CarbonInterval::week(),
$now
);
$tuesdays = new DatePeriod(
$tuesday,
CarbonInterval::week(),
$now
);
$sundays = new DatePeriod(
$sunday,
CarbonInterval::week(4),
$now
);
$allDays = [];
foreach ($mondays as $day) {
$allDays[] = $day;
}
foreach ($tuesdays as $day) {
$allDays[] = $day;
}
foreach ($sundays as $day) {
$allDays[] = $day;
}
usort($allDays, function ($a, $b) {
return strtotime($a) - strtotime($b);
});
foreach ($allDays as $day) {
echo $day->format("M D Y-m-d")."<br>";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With