| Server IP : 54.36.91.62 / Your IP : 216.73.217.111 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/libraries/regularlabs/src/ |
Upload File : |
<?php
/**
* @package Regular Labs Library
* @version 25.9.9174
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2025 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
namespace RegularLabs\Library;
defined('_JEXEC') or die;
class Date
{
/**
* Convert string with 'date' format to 'strftime' format
*/
public static function dateToStrftimeFormat(string $format): string
{
return strtr((string) $format, self::getDateToStrftimeFormats());
}
/**
* Convert string to a correct date format ('00-00-00 00:00:00' or '00-00-00') or empty string
*/
public static function fix(string $date): string
{
if (!$date) {
return '';
}
$date = trim($date);
// Check if date has correct syntax: 00-00-00 00:00:00
// If so, the date format is correct
if (\RegularLabs\Library\RegEx::match('^[0-9]+-[0-9]+-[0-9]+( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$', $date)) {
return $date;
}
// Check if date has syntax: 00-00-00 00:00
// If so, it is missing the seconds, so add :00 (seconds)
if (\RegularLabs\Library\RegEx::match('^[0-9]+-[0-9]+-[0-9]+ [0-9][0-9]:[0-9][0-9]$', $date)) {
return $date . ':00';
}
// Check if date has a prepending date syntax: 00-00-00
// If so, it is missing a correct time time, so add 00:00:00 (hours, minutes, seconds)
if (\RegularLabs\Library\RegEx::match('^([0-9]+-[0-9]+-[0-9]+)$', $date, $match)) {
return $match[1] . ' 00:00:00';
}
// Date format is not correct, so return empty string
return '';
}
/**
* Convert string to a correct time format: 1:23 to 01:23
*/
public static function fixTime(string $time, bool $include_seconds = \true): string
{
[$hours, $minutes, $seconds] = explode(':', $time . '::');
$hours = str_pad($hours, 2, '0', \STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, '0', \STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', \STR_PAD_LEFT);
if (!$include_seconds) {
return $hours . ':' . $minutes;
}
return $hours . ':' . $minutes . ':' . $seconds;
}
/**
* Convert string with 'date' format to 'strftime' format
*/
public static function strftimeToDateFormat(string $format): string
{
if (!str_contains($format, '%')) {
return $format;
}
return strtr((string) $format, self::getStrftimeToDateFormats());
}
private static function getDateToStrftimeFormats(): array
{
return [
// Day - no strf eq : S
'd' => '%d',
'D' => '%a',
'jS' => '%#d[TH]',
'j' => '%#d',
'l' => '%A',
'N' => '%u',
'w' => '%w',
'z' => '%j',
// Week - no date eq : %U, %W
'W' => '%V',
// Month - no strf eq : n, t
'F' => '%B',
'm' => '%m',
'M' => '%b',
// Year - no strf eq : L; no date eq : %C, %g
'o' => '%G',
'Y' => '%Y',
'y' => '%y',
// Time - no strf eq : B, G, u; no date eq : %r, %R, %T, %X
'a' => '%P',
'A' => '%p',
'g' => '%l',
'h' => '%I',
'H' => '%H',
'i' => '%M',
's' => '%S',
// Timezone - no strf eq : e, I, P, Z
'O' => '%z',
'T' => '%Z',
// Full Date / Time - no strf eq : c, r; no date eq : %c, %D, %F, %x
'U' => '%s',
];
}
private static function getStrftimeToDateFormats(): array
{
return [
// Day
'%d' => 'd',
'%a' => 'D',
'%#d' => 'j',
'%A' => 'l',
'%u' => 'N',
'%w' => 'w',
'%j' => 'z',
// Week
'%V' => 'W',
// Month
'%B' => 'F',
'%m' => 'm',
'%b' => 'M',
// Year
'%G' => 'o',
'%Y' => 'Y',
'%y' => 'y',
// Time
'%P' => 'a',
'%p' => 'A',
'%l' => 'g',
'%I' => 'h',
'%H' => 'H',
'%M' => 'i',
'%S' => 's',
// Timezone
'%z' => 'O',
'%Z' => 'T',
// Full Date / Time
'%s' => 'U',
];
}
}