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