Yii2 получить время как UTC - PullRequest
       38

Yii2 получить время как UTC

0 голосов
/ 04 апреля 2019

Есть ли простой способ получить метку времени в UTC без обновления файла конфигурации?

Я могу сделать это с помощью php date_default_timezone_set. Мне это нужно в Yii2 и new \DateTimeZone('UTC') вроде не работает.

Ответы [ 3 ]

1 голос
/ 04 апреля 2019
$date = new \DateTimeZone(\Yii::$app->timeZone);
echo $date->getName().'<br>';


$date = new DateTimeZone('UTC');
echo $date->getName().'<br>'; 


\Yii::$app->timeZone = 'EST';
$date = new DateTimeZone(\Yii::$app->timeZone);
echo $date->getName(); 

Использование функций Yii

// @var string the time zone to use for formatting time and date values.
// This can be any value that may be passed to [date_default_timezone_set()](http://www.php.net/manual/en/function.date-default-timezone-set.php)
Yii::$app->formatter->timeZone = 'UTC';


// @var string the default format string to be used to format a [[asDate()|date]]. `UTC`, `Europe/Berlin` or `America/Chicago`.
Yii::$app->formatter->defaultTimeZone = 'UTC';
// or
$formatter= new \yii\i18n\Formatter;
$formatter->defaultTimeZone = 'UTC'; // ..
0 голосов
/ 05 апреля 2019

Вы можете установить часовой пояс по умолчанию в действии контроллера, используя следующий код

$UTC = new DateTimeZone("UTC");
$newTZ = new DateTimeZone("America/New_York");
$date = new DateTime( "2011-01-01 15:00:00", $UTC );
$date->setTimezone( $newTZ );
echo $date->format('Y-m-d H:i:s');

ИЛИ использовать в любом действии контроллера

date_default_timezone_set("Asia/Bangkok");
echo date_default_timezone_get();
0 голосов
/ 04 апреля 2019

Обычно наиболее удобный способ справиться с этим - использовать компонент Formatter.Если все даты находятся в одном часовом поясе, вы настраиваете его только в одном месте, используя параметр Formatter::$defaultTimezone в своей конфигурации (вы можете пропустить это в вашем случае, так как UTC является значением по умолчанию):

'formatter' => [
    'defaultTimeZone' => 'UTC',
],

Тогда вы можете использовать asTimestamp():

echo Yii::$app->getFormatter()->asTimestamp($date);
...