Php 以UTC为单位的Laravel设置和提取时间

Php 以UTC为单位的Laravel设置和提取时间,php,datetime,laravel,laravel-4,Php,Datetime,Laravel,Laravel 4,我已经在app.php中设置了“时区”=>“UTC”。。。我们的数据库将日期时间存储在UTC中。我们无权访问数据库配置。。。因此,我们必须从应用程序端进行更改。。 目前它的存储值仅为2014-09-11 00:00:00我从日历中选择的值。理想情况下,我正在尝试解决这个问题 当我从新加坡UTC+8插入日期时,它应存储为 'enterdate+8' 2014-09-11 08:00:00 in database.. 同样,当我插入日本utc+9的日期时,它应该存储 'enterdate+9'

我已经在app.php中设置了
“时区”=>“UTC”
。。。我们的数据库将日期时间存储在
UTC
中。我们无权访问数据库配置。。。因此,我们必须从应用程序端进行更改。。 目前它的存储值仅为
2014-09-11 00:00:00
我从
日历中选择的值。理想情况下,我正在尝试解决这个问题

当我从
新加坡UTC+8
插入日期时,它应存储为

'enterdate+8' 2014-09-11 08:00:00 in database.. 
同样,当我插入日本utc+9的日期时,它应该存储

'enterdate+9' 2014-09-11 09:00:00 in database
但是当用户搜索
2014-09-11 08:00:00
时,它应该转换为本地时间…类似于
2014-09-11 00:00:00


要想在laravel 4中解决这个问题,请使用您现有的优质碳材料:

// for Eloquent
$dateFromDbInLocal = $model->created_at->tz('USER_TIMEZONE');

// for any timestamp
$dateFromDbInLocal = with(new Carbon\Carbon($timestampUTC))->tz('USER_TIMEZONE');

// other way around:
$dateInLocal = new Carbon\Carbon($timestampLocal, 'USER_TIMEZONE');
$dateInUtc = $dateInLocal->tz('utc');
例如:

$now = Carbon\Carbon::now(); // utc 2014-09-10 08:24:50

$japanUser = User::find($someId);
$japanUser->created_at->tz('Japan'); // 2014-09-10 17:24:50

如果你的应用程序与DB在同一时区工作,你不需要在保存时转换任何内容。只需在表示层中执行此操作,用户就可以读取格式化为其时区的日期。

是的,它可以工作,但我们如何为
user\u时区
输入值?它应该自动检测时区对吗??我们如何做到?您必须提供用户的时区。您可以将其存储在用户表中,从请求数据或其他任何内容中检测它。