【发布时间】:2016-07-08 09:43:58
【问题描述】:
需要了解的重要信息:
数据库将用户时区偏移存储为数字(例如:EST 中的用户有一个值为 -4 的时区列
服务器时间为 UTC
我正在返回一个查询,其中包含按工作日和小时分组的聚合数据,希望将其显示在热图上。
到目前为止,这就是我所拥有的。
$timezone = Auth::user()->timezone;
$week_data = DB::select('SELECT COUNT(id) as total, WEEKDAY(created_at) AS week_day ,HOUR(created_at) as hours
FROM messages
GROUP BY week_day, hours');
举几个例子:
在此示例中,“week_day”是一周中某天的数字表示(0 = 星期一,6 = 星期日) 小时是一天中小时的数字表示(24 小时格式)
目前,具有 week_day->2 和 hours->23 的对象表示星期三晚上 11 点 IN UTC
获得查询结果后,我使用 foreach 循环分离数据,其中 $new_array 是我之前实例化的变量(未显示)
foreach ($week_data as $data)
{
if ($data->week_day == 0)
{
$new_array['Monday'][$data->hours] = $data;
}
elseif ($data->week_day == 1)
{
$new_array['Tuesday'][$data->hours] = $data;
}elseif ($data->week_day == 2)
{
$new_array['Wednesday'][$data->hours] = $data;
} elseif ($data->week_day == 3)
{
$new_array['Thursday'][$data->hours] = $data;
}
elseif ($data->week_day == 4)
{
$new_array['Friday'][$data->hours] = $data;
}
elseif ($data->week_day == 5)
{
$new_array['Saturday'][$data->hours] = $data;
}
elseif ($data->week_day == 6)
{
$new_array['Sunday'][$data->hours] = $data;
}
}
现在,我正在尝试找到一种方法来调整数组数据以反映用户时区的偏移量。因此,信息应该在到达带有 switch 案例的 foreach 循环之前以某种方式进行处理。以前有没有人处理过这个问题?谢谢!
【问题讨论】:
标签: php arrays timezone timezone-offset php-carbon