40 lines
997 B
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();
|
|
}
|
|
}
|