34 lines
974 B
PHP
34 lines
974 B
PHP
|
<?php
|
||
|
|
||
|
final class DateTimeWrapper {
|
||
|
private $dateTime;
|
||
|
private $locale;
|
||
|
private $timeZone;
|
||
|
|
||
|
public function __construct(string $text, string $locale = 'en-GB', string $timeZone = 'utc') {
|
||
|
if (!$locale) {
|
||
|
$locale = 'en-GB';
|
||
|
}
|
||
|
if (!$timeZone) {
|
||
|
$timeZone = 'utc';
|
||
|
}
|
||
|
$this->dateTime = new DateTime($text);
|
||
|
$this->locale = $locale;
|
||
|
$this->timeZone = new DateTimeZone($timeZone);
|
||
|
}
|
||
|
|
||
|
public function getShortDate(): string {
|
||
|
$formatter = IntlDateFormatter::create($this->locale, IntlDateFormatter::SHORT, IntlDateFormatter::NONE, $this->timeZone);
|
||
|
return $formatter->format($this->dateTime);
|
||
|
}
|
||
|
|
||
|
public function getOffset(): string {
|
||
|
return $this->timeZone->getOffset($this->dateTime);
|
||
|
}
|
||
|
|
||
|
public function get24Time(): string {
|
||
|
$formatter = IntlDateFormatter::create($this->locale, IntlDateFormatter::NONE, IntlDateFormatter::SHORT, $this->timeZone);
|
||
|
return $formatter->format($this->dateTime);
|
||
|
}
|
||
|
}
|