2013-03-14 69 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那樣結束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 2013-03-15 14:23:32

0

您的ISO時間格式正確。日期時間結束處的'Z'表示'祖魯時間',這是UCT時區。

因此,如果您尚未指定不同的時區,則只能指定'Z'。

就你而言,你所引用的日期確實包括一個時區(-6000),所以我不希望看到'Z'。

更多信息,請參見維基百科頁面:http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

對於PHP和JavaScript之間移動日期/時間值,我會說這樣做的最簡單方法就是使用unix時間戳。這是一個簡單的整數值,所以沒有格式可以考慮,並且兩種語言都完全理解它。唯一需要注意的是,在Javascript中,PHP的運行速度只有微秒級,而對於PHP而言,則需要秒級,因此您需要乘以或除以1000.但這很簡單。

相關問題