Combined\Datetime date/number to weekday conversion
Convert functions for date or weekday number to weekday name or date to weekday number
This commit is contained in:
@@ -139,6 +139,22 @@ foreach ($compare_dates as $compare_date) {
|
||||
. DgS::printAr(DateTime::calcDaysInterval($compare_date[0], $compare_date[1], true)) . "<br>";
|
||||
}
|
||||
|
||||
// test date conversion
|
||||
$dow = 2;
|
||||
print "DOW[$dow]: " . DateTime::setWeekdayNameFromIsoDow($dow) . "<br>";
|
||||
print "DOW[$dow],long: " . DateTime::setWeekdayNameFromIsoDow($dow, true) . "<br>";
|
||||
$date = '2022-7-22';
|
||||
print "DATE-dow[$date]: " . DateTime::setWeekdayNameFromDate($date) . "<br>";
|
||||
print "DATE-dow[$date],long: " . DateTime::setWeekdayNameFromDate($date, true) . "<br>";
|
||||
print "DOW-date[$date]: " . DateTime::setWeekdayNumberFromDate($date) . "<br>";
|
||||
$dow = 11;
|
||||
print "DOW[$dow];invalid: " . DateTime::setWeekdayNameFromIsoDow($dow) . "<br>";
|
||||
print "DOW[$dow],long;invalid: " . DateTime::setWeekdayNameFromIsoDow($dow, true) . "<br>";
|
||||
$date = '2022-70-242';
|
||||
print "DATE-dow[$date];invalid: " . DateTime::setWeekdayNameFromDate($date) . "<br>";
|
||||
print "DATE-dow[$date],long;invalid: " . DateTime::setWeekdayNameFromDate($date, true) . "<br>";
|
||||
print "DOW-date[$date];invalid: " . DateTime::setWeekdayNumberFromDate($date) . "<br>";
|
||||
|
||||
// error message
|
||||
print $log->printErrorMsg();
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* image thumbnail, rotate, etc
|
||||
* date convert and check functions
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
@@ -193,6 +193,54 @@ class DateTime
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns long or short day of week name based on ISO day of week number
|
||||
* 1: Monday
|
||||
* ...
|
||||
* 7: Sunday
|
||||
*
|
||||
* @param int $isodow 1: Monday, 7: Sunday
|
||||
* @param bool $long Default false 'Mon', if true 'Monday'
|
||||
* @return string Day of week string either short 'Mon' or long 'Monday'
|
||||
*/
|
||||
public static function setWeekdayNameFromIsoDow(int $isodow, bool $long = false): string
|
||||
{
|
||||
// if not valid, set to invalid
|
||||
if ($isodow < 1 || $isodow > 7) {
|
||||
return $long ? 'Invalid' : 'Inv';
|
||||
}
|
||||
return date($long ? 'l' : 'D', strtotime("Sunday +{$isodow} days"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the day of week Name from date
|
||||
*
|
||||
* @param string $date Any valid date
|
||||
* @param bool $long Default false 'Mon', if true 'Monday'
|
||||
* @return string Day of week string either short 'Mon' or long 'Monday'
|
||||
*/
|
||||
public static function setWeekdayNameFromDate(string $date, bool $long = false): string
|
||||
{
|
||||
if (!self::checkDate($date)) {
|
||||
return $long ? 'Invalid' : 'Inv';
|
||||
}
|
||||
return date($long ? 'l' : 'D', strtotime($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the day of week Name from date
|
||||
*
|
||||
* @param string $date Any valid date
|
||||
* @return int ISO Weekday number 1: Monday, 7: Sunday, -1 for invalid date
|
||||
*/
|
||||
public static function setWeekdayNumberFromDate(string $date): int
|
||||
{
|
||||
if (!self::checkDate($date)) {
|
||||
return -1;
|
||||
}
|
||||
return (int)date('N', strtotime($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* splits & checks date, wrap around for check_date function
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user