$dater = new Dater\Dater(new Dater\Locale\En()); $dater->format(time(), 'd/m/Y'); // 2013/03/14 $dater->addFormat('slashedDate', 'd/m/Y'); $dater->format(time(), 'slashedDate'); // 2013/03/14 $dater->slashedDate(time()); // 2013/03/14
$dater->addFormatOption('ago', function (DateTime $datetime) { return floor((time() - $datetime->getTimestamp()) / 86400) . ' days ago'; }); $dater->format(time() - 60*60*24*7, 'd FY, ago'); // 14 March 2013, 7 days ago
$dater->setLocale(new Dater\Locale\En()); echo $dater->date(); // 03/21/2013 echo $dater->now('j F Y'); // 21 March 2013 $dater->setLocale(Dater\Dater::getLocaleByCode('ru')); echo $dater->date(); // 21.03.2013 echo $dater->now('j F Y'); // 21 2013
echo $dater->date(); // 03/21/2013 (client timezone, depends on locale) echo $dater->time(); // 5:41 AM (client timezone, depends on locale) echo $dater->datetime(); // 03/21/2013 5:41 (client timezone, depends on locale) echo $dater->isoDate(); // 2013-03-21 (client timezone) echo $dater->isoTime(); // 05:41:28 (client timezone) echo $dater->isoDatetime(); // 2013-03-21 05:41:28 (client timezone) echo $dater->serverDate(); // 2013-03-21 (server timezone) echo $dater->serverTime(); // 09:41:28 (server timezone) echo $dater->serverDatetime(); // 2013-03-21 09:41:28 (server timezone)
$dater->setServerTimezone('Europe/Moscow'); $dater->setClientTimezone('Europe/London'); echo $dater->serverDatetime(); // 2013-03-21 08:18:06 echo $dater->isoDatetime(); // 2013-03-21 04:18:06 echo $dater->time(); // 04:18
$dater->setServerTimezone('Europe/Moscow');
The date () function and the DateTime class will return the time in the newly set time zone. To disable this, pass the false method to the second parameter. $dater = new Dater\Dater(new Dater\Locale\Ru(), 'Europe/Moscow'); $timezoneDetector = new Dater\TimezoneDetector(); $dater->setClientTimezone($timezoneDetector->getClientTimezone()); $dataHandler = new Dater\DataHandler($dater); $dataHandler->enableOutputTimezoneHandler(); $dataHandler->convertRequestDataToServerTimezone();
<html> <head> <?= $timezoneDetector->getHtmlJsCode() ?> </head> </html>
<html> <body> Timestamp format: 1363238564 ( ) Timestamp format: 1363238564[Y/m/d] Timestamp format: 1363238564[datetime] Server datetime format: 2013-03-14 09:22:44[Y/m/d] Server datetime format: 2013-03-14 09:22:44[time] Server datetime format: 2013-03-14 09:22:44 </body> </html>
<html> <body> Timestamp format: 1363238564 ( ) Timestamp format: 2013/03/14 Timestamp format: 14.03.2013 07:22 Server datetime format: 2013/03/14 Server datetime format: 07:22 Server datetime format: 2013-03-14 07:22:44 </body> </html>
$dataHandler->convertRequestDataToServerTimezone();
will make so that all YYYY-MM-DD HH: MM: SS data received from the client will be converted into YYYY-MM-DD HH: MM: SS server time zone. Thus, the server will never know that the client receives and sends the date-time in a different time zone.$dataHandler->enableOutputTimezoneHandler();
and simply frame each date-time by calling the appropriate formatting method. For example, <?= $dater->date($datetimeOrTimestamp) ?>
."dater/dater":"1.*@dev"
.Source: https://habr.com/ru/post/173693/
All Articles