JavaScript Дата месяца Объект месяца начинается с 0

Моя цель – эффективно преобразовать временную метку из MySQL в объект JavaScript Date. Вот мой текущий фрагмент, который преобразует временную метку MySQL в форматированную дату в PHP:

<?php // formats timestamp into following format: 2009, 7, 30 $date = date("Y, n, j", strtotime($row["date"])); ?> 

Затем я использую это значение $date для диаграммы с использованием API диаграмм Google, для которого требуется объект JavaScript Date:

 data.setValue(<?=$count;?>, 0, new Date(<?=$date;?>)); 

Проблема в том, что объект JavaScript Date начинает индекс месяца с 0, поэтому выход всегда за 1 месяц вперед . Каков наиболее эффективный способ решения этой проблемы?

Заранее спасибо!

Вы можете создать конструктор Date date в формате mm / dd / yyyy или yyyy / mm / dd, и он преобразует его:

 >>> new Date('7/30/2009'); Thu Jul 30 2009 00:00:00 GMT-0700 (Pacific Daylight Time) >>> new Date('2009/7/30'); Thu Jul 30 2009 00:00:00 GMT-0700 (Pacific Daylight Time) 

Вы должны вручную вычесть это лишнее число из месяца, которое я боюсь. Объект Date JS – беспорядок.

Чтобы получить дату в представлении строки строки, совместимом с DataTable Google Chart, например

 "Date(2015,0,31)" // note the quotes from the json string and the 0 for January 

не прогуливаясь по строкам запроса в php, у вас может быть формат MySQL прямо следующим образом:

 <?php $sql = " SELECT CONCAT('Date(', YEAR(datefield), ',', (MONTH(datefield)-1), ',', DAY(datefield), ')') AS gChartDate, valuefield FROM table ORDER BY datefield "; $query = $pdo->query($sql); $fetchAll = $query->fetchAll(PDO::FETCH_NUM); // fetch in not-associative array array_unshift($fetchAll, [['type'=>'date', 'label'=>'date'], 'value']); // add title row $json = json_encode($fetchAll, JSON_NUMERIC_CHECK); 

затем в javascript:

 var data = google.visualization.arrayToDataTable(<?php echo($json) ?>);