如何设置Laravel Carbon时区的时间戳?

时间:2016-06-09 09:57:35

标签: laravel eloquent php-carbon

我的项目主要是在CET地区。我在config / app.php中设置了CET, 但基准中的所有数据透视时间戳都以UTC时间存储?

我怎样才能设置"全球"时区的时区?

我做了这个测试:

<?php
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
echo "<br />".date('m/d/Y h:i:s a', time());

$mytime = Carbon\Carbon::now();
echo "<br />".$mytime->toDateTimeString();
?>

以及此处的结果:

The current server timezone is: CET
06/09/2016 12:06:04 pm
2016-06-09 11:06:04

TNX ÿ

6 个答案:

答案 0 :(得分:14)

Carbon使用默认的 DateTime PHP对象,因此请使用 date_default_timezone_set()函数,例如: date_default_timezone_set('Europe/London');

答案 1 :(得分:6)

在AppServiceProvider.php中你可以添加php功能来改变整个项目的时间戳

public function boot()
{
    Schema::defaultStringLength(191);
    date_default_timezone_set('Asia/Aden');
}

答案 2 :(得分:3)

你可以用mutators实现它

public function getCreatedAtAttribute($value)
{

return Carbon::createFromTimestamp(strtotime($value))
    ->timezone(Config::get('app.timezone'))
    ->toDateTimeString(); //remove this one if u want to return Carbon object
}

答案 3 :(得分:2)

看起来解决方案是不使用&#34; CET&#34;但是一个明确的时区,例如:&#34;欧洲\明斯克&#34;

PHP Timezones

Timezones in Laravel 4

答案 4 :(得分:0)

更新文件config/app.php

例如:'timezone' => 'Asia/Jerusalem'而不是'timezone' => 'UTC'

答案 5 :(得分:0)

如果您使用的是Laravel Carbon时间戳, 那么您必须在App / Providers / AppServiceProvider.php文件中更改时区

// App / Providers / AppServiceProvider.php

public function boot()
{
    date_default_timezone_set('Asia/Calcutta');
}