2013-03-14 3 views
0

У меня есть код php, который извлекает необходимую информацию из базы данных. Код даты php форматируется в формате («Y-m-d H: i: s») ». Я пытаюсь получить эти даты из базы данных и добавить их в календарь с использованием JavaScript. Я зацикливаю на события, которые я хочу добавить в календарь. Я должен по-разному найти решения, но никто не работает.PHP вытаскивание данных из базы данных и преобразование даты в iso8610 Дата JavaScript

<script type='text/javascript'> 
    <?php for($x = 0; $x < count($events); $x++) { ?> 
      var dateToConvert = new Date('<?php echo date(DATE_ISO8601, strtotime($events[$x]["startDate"])); ?>'); 
      var startDate = dateToConvert.toISOString(); 
      var endDate = '<?php echo date(DATE_ISO8601, strtotime($events[$x]["endDate"])); ?>'; 
      var events = [ 
      { 
       title: '<?php echo $events[$x]["name"]; ?>', 
       start: new Date(startDate), 
       end: endDate 
      } 
      ]; 
    <?php } ?> 
</script> 

Я предполагаю, что у меня что-то не хватает, но я не могу понять это. Я использовал отладчик Chrome, и это то, что у меня есть в качестве входных данных. (2013-03-18T01: 00: 00-0600) Кажется, у него нет Z в конце, как должно.

Значение в базе данных (2013-03-18 01:00:00).

Что мне не хватает?

ответ

0

Вы не должны передавать даты ни в каком строчном формате. Вместо этого передайте их как числа.

var dateToConvert = new Date(); 
dateToConvert.setTime(<?php echo strtotime($events[$x]['startDate']); ?>000); 

Это будет работать намного надежнее. Обратите внимание, что три нули есть, потому что JS обрабатывает время в миллисекундах, тогда как PHP делает это за секунды.

+0

спасибо. Это сработало. – user2171505

0

Ваше время ISO отформатировано правильно. «Z» в конце даты-времени указывает время «Зулу», которое является часовым поясом UCT.

Таким образом, вы указали бы только «Z», если вы не указали другой часовой пояс.

В вашем случае дата, которую вы указали, включает часовой пояс (-6000), поэтому я не ожидал увидеть «Z».

Смотрите страницу Википедии для получения дополнительной информации: http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

Для перемещения значения даты/времени между PHP и Javascript, я бы сказал, что самый простой способ сделать это просто использовать метку времени Unix. Это простое целочисленное значение, поэтому нет никакого форматирования, о котором нужно думать, и оба языка прекрасно понимают его. Единственное предостережение в том, что в Javascript это в микросекундах против секунд для PHP, поэтому вам нужно умножить или разделить на 1000. Но это достаточно просто.