2013-03-14 2 views
0

데이터베이스에서 필요한 정보를 가져 오는 PHP 코드가 있습니다. php 날짜 코드는 "format ("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이 존재합니다.

+0

감사합니다. 그게 효과가 있었어. – user2171505

0

ISO 시간 형식이 올바르게 지정되었습니다. 날짜 - 시간의 끝에있는 'Z'는 UCT 시간대 인 '줄 루어 시간'을 나타냅니다.

따라서 다른 시간대를 지정하지 않은 경우 'Z'만 지정하면됩니다.

귀하의 경우 인용 한 날짜에 시간대 (-6000)가 포함되어 있으므로 'Z'가 표시되지 않습니다.

더 많은 정보를 원하시면 위키피디아 페이지를 참조하십시오 : PHP와 자바 스크립트 사이에 날짜/시간 값을 이동에 대한 http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

, 나는 그것을 할 수있는 가장 쉬운 방법은 유닉스 타임 스탬프를 사용하는 것입니다 말할 것입니다. 단순한 정수 값이므로 생각할 형식이 없으며 두 언어 모두 완벽하게 이해합니다. 유일한주의 사항은 Javascript에서 PHP의 마이크로 초에서 초까지이므로 1000을 곱하거나 나눌 필요가 있다는 것입니다.하지만 충분히 간단합니다.

관련 문제