Я использую библиотеку Highcharts для отображения значений на веб-сайте. xAxis
моей таблицы - дата и отлично работает в Firefox и Chrome, но не работает в браузере Safari.
Я подозреваю, что интерпретация объекта Date
в JavaScript с помощью Safari отличается от других браузеров.
¿Какой-то намек?
Это мой код:
<script>
myChart = new Highcharts.chart('containerTemperatura', {
title: {
text: 'Evolución de la Temperatura'
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
minute: '%H:%M',
hour: '%H:%M'
}
},
yAxis: {
title: {
text: 'ºC'
}
},
series: [{
name: 'TEMPERATURA',
color: '#808080',
data:(function(){
var data = [];
<?php
for($i = 0; $i < count($ultimasLecturas); $i++){
?>
// EXAMPLE: $ultimasLecturas[$i]->fechaHora = "2017-08-12 12:34:04"
var $fecha = new Date("<?php echo $ultimasLecturas[$i]->fechaHora;?>");
// a compensation for different timezones
$fechaProcesada = $fecha.getTime() + <?php echo $UTCmilseg; ?>;
data.push([$fechaProcesada,<?php echo $ultimasLecturas[$i]->temperatura;?>]);
<?php
} ?>
return data;
})()
}]
});
</script>
Я решил вопрос, добавив эту функцию JavaScript:
function parseDate(inputTimestamp){
var parts = inputTimestamp.split(/[ \/:-]/g);
var dateFormated = parts[1] + "/" + parts[2] + "/" + parts[0] + " " + parts[3] + ":" + parts[4] + ":" + parts[5];
return new Date(dateFormated);
}
И изменив эту линию...
var $fecha = new Date("<?php echo $ultimasLecturas[$i]->fechaHora;?>");
для этой другой линии:
var $fecha = parseDate("<?php echo $ultimasLecturas[$i]->fechaHora;?>");
new Date("2017-08-12 12:34:04")
возвращает недопустимую Дату (которая соответствует ECMA-262). См. Почему Date.parse дает неверные результаты? Обратите внимание, что конструктор Date и Date.parse используют один и тот же встроенный синтаксический анализатор.