nur-sery/nur_src/b/date/Date.php

40 lines
997 B
PHP

<?php
namespace nur\b\date;
use nur\b\ValueException;
class Date extends Datetime {
const PATTERN = '/^(\d{2})\/(\d{2})\/(\d{4})$/';
const FORMAT = "d/m/Y";
static function parse_date($date): int {
if ($date instanceof Datetime) {
$date = $date->getTime();
} elseif ($date === null || is_int($date)) {
if ($date === null) $date = time();
} elseif (is_array($date)) {
[$y, $m, $d] = $date;
$date = mktime(0, 0, 0, $m, $d, $y);
} elseif (is_string($date) && preg_match(self::PATTERN, $date, $ms)) {
$d = intval($ms[1]);
$m = intval($ms[2]);
$y = intval($ms[3]);
$date = mktime(0, 0, 0, $m, $d, $y);
} else {
throw ValueException::invalid_value($date, "date");
}
return $date;
}
function __construct($date=null) {
parent::__construct(false);
if ($date !== false) {
$this->setTime(self::parse_date($date));
}
}
protected function afterUpdate(): void {
$this->wrapStart();
}
}