用于chart.js数据的Laravel 5.1格式日期数组

时间:2016-01-29 10:14:41

标签: laravel laravel-5.1 chart.js

道歉,我现在无法上传我的控制器代码,但我希望你能帮助我提供给你的信息。

我使用chart.js绘制数据的折线图。我从控制器传递数据点的值和与日期点匹配的日期。日期标签位于x轴上,数据点位于y轴上。

在我看来,我从控制器接收到以下数组:

["2015-06-01","2015-05-01","2015-04-01","2015-03-01","2015-02-01","2015-01-01"]

然后将其编码为JSON。现在,我是否应该尝试将日期格式化为控制器内部或视图内部更具可读性的内容?

修改

这是我的代码片段,它将我的体重数据发送到我的观点:

$weight = Weight::where(compact('user_id', 'gecko_id'))->orderBy('weighed_date', 'desc')->take(7)->get()->reverse();

然后

return view('gecko.show')
            ->with('gecko', $gecko)
            ->with('dates', $weight->lists('weighed_date'))
            ->with('amounts', $weight->lists('gecko_weight'));

2 个答案:

答案 0 :(得分:1)

如果您纯粹希望将其更改为演示文稿的一部分,我会说在ChartJS本身格式化它。如果你看一下这个question,我们就会看到我们可以使用类似的方式格式化数据点的标签。

scaleLabel: function (valuePayload) {
    return Number(valuePayload.value).toFixed(2).replace('.',',') + '$';
}

现在在你的情况下你可能会做类似

的事情
scaleLabel: function (value) {
    return moment(value).format("ddd, hA"); ;
}

以一种很好的方式格式化日期。在这种情况下使用momentjs

警告:上面没有经过测试我从未用ChartJS做过这个,但从理论上说它应该可行。

答案 1 :(得分:0)

我设法实现这一目标的唯一方法是在将控制器发送到我的视图之前格式化控制器内的日期。我将在以后不在工作时发布代码:)