Я получаю неправильную дату при попытке отобразить данные MySql на диаграмме CanvasJS.Даты из базы данных относятся к февралю и марту 2019 года, но я получаю 18-19 января 1970 года. Сначала я конвертирую дату в метку времени, а затем сохраняю ее в dataPoints.Я проверил онлайн конвертер меток времени, и похоже, что метки времени верны при преобразовании обратно в дату.
Это код из контроллера:
public function generate(Request $request) {
if ($request->tip == 0) {
$uid = Auth::id();
$data= DB::select(DB::raw("SELECT 1 AS tip, prihodi.iznos, vrste_prihoda.naziv, prihodi.datum AS datum FROM prihodi LEFT JOIN vrste_prihoda ON vrste_prihoda.id = prihodi.vrsta_prihoda_id WHERE prihodi.datum >= '$request->od_datum' AND prihodi.datum <= '$request->do_datum' AND prihodi.user_id = '$uid' UNION SELECT 2 AS tip, izdaci.iznos, vrste_izdataka.naziv, izdaci.datum AS datum FROM izdaci LEFT JOIN vrste_izdataka ON vrste_izdataka.id = izdaci.vrsta_izdatka_id WHERE izdaci.datum >= '$request->od_datum' AND izdaci.datum <= '$request->do_datum' AND izdaci.user_id = '$uid' ORDER BY datum"));
$tip = 0;
} else if ($request->tip == 1) {
$data = DB::table('prihodi')->select('iznos', 'datum', 'naziv')->join('vrste_prihoda', 'vrste_prihoda.id', 'prihodi.vrsta_prihoda_id')->where('prihodi.user_id', Auth::id())->where('datum', '>=', $request->od_datum)->where('datum', '<=', $request->do_datum)->orderBy('datum')->get();
$tip = 1;
} else if ($request->tip == 2) {
$data = DB::table('izdaci')->select('iznos', 'datum', 'naziv')->join('vrste_izdataka', 'vrste_izdataka.id', 'izdaci.vrsta_izdatka_id')->where('izdaci.user_id', Auth::id())->where('datum', '>=', $request->od_datum)->where('datum', '<=', $request->do_datum)->orderBy('datum')->get();
$tip = 2;
}
$dataPoints = array();
$y = 0;
foreach($data as $item) {
if($tip == 0) {
if($item->tip == 2) {
$y = $y - $item->iznos;
} else {
$y = $y + $item->iznos;
}
} else if ($tip == 1) {
$y = $y + $item->iznos;
} else if ($tip == 2) {
$y = $y - $item->iznos;
}
$date = $item->datum;
$newDate = date("d-m-Y", strtotime($date . '-1 Month'));
list($day, $month, $year) = explode('-', $newDate);
$x = mktime(0, 0, 0, $month, $day, $year);
array_push($dataPoints,array("x" => $x, "y" => $y));
}
return view('generate')->with('dataPoints', $dataPoints);
}
И в представлении у меня есть следующий скрипт:
<script type="text/javascript">
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer",
{
title: {
text: "Primanja/izdaci za odabrani period"
},
axisY: {
valueFormatString: "#,###"
},
axisX:{
title: "time",
gridThickness: 2,
interval:2,
intervalType: "day",
valueFormatString: "hh TT K",
labelAngle: -20
},
data: [
{
type: "area",
color: "rgba(0,75,141,0.7)",
xValueType: "dateTime",
dataPoints: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
}
]
});
chart.render();
}
</script>