Laravel以UTC格式设置和获取时间

时间:2014-09-10 05:46:33

标签: php datetime laravel laravel-4

我在app.php中设置了'timezone' => 'UTC' ...我们的数据库将日期时间存储在UTC中..我们无法访问数据库配置...所以我们必须从应用程序端进行更改.. 目前它的存储价值仅为2014-09-11 00:00:00我从calender中选择的内容..理想情况下我试图解决这个问题

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

'enterdate+8' 2014-09-11 08:00:00 in database.. 

同样,当我从japan 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中解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用您现有的优秀Carbon

// 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相同的时区工作,你真的不需要在保存时转换任何东西。只需在表示层中执行此操作,以便用户可以读取格式化为其时区的日期。