2015-07-05 28 views
0

我正在使用timeago javascript插件來計算從用戶創建帖子時開始經過的時間。問題是,當用戶創建一個新帖子時,timeago函數啓動顯示時間從「10小時」而不是「剛纔」開始。我認爲這是因爲我的數據庫中的時間存儲在用戶時區的不同時區中。timeago在javascript中的不同時區中的時間

任何想法如何解決這個問題?

經過一番研究,我發現時間戳的格式必須在ISO 8601中,但是在測試不起作用之後!

下面是我顯示時間的代碼。

<?php 
foreach ($postsArray as $v1) 
          { 
          ?>  
          <article>      
          <header><h3><?php echo $v1->TITLE; ?></h3>   </header> 
          <p><?php echo $v1->CONTENT; ?></p> 
          <?php 
          $timestamp = $v1->TIME; 
          $formatedDate = date("c",strtotime($timestamp)); 
          ?> 
          <footer><b>Author:</b> <?php echo $v1->USERNAME; ?> <b>Published:</b> <time class="timeago" datetime="<? echo $formatedDate; ?>"></time></footer> 
          </article> 
          <?php 
          } 
          ?>  

下面是JavaScript函數:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $('time.timeago').timeago(); 
    }); 
</script> 
+0

如果沒有給我們* timeago *函數的代碼,就不可能回答這個問題。 –

+0

始終在您的數據庫中以UTC保存日期/時間值。 – marekful

+0

我已添加代碼! – user2242558

回答

-2

我喜歡此刻JS :) http://momentjs.com/timezone/

您可以檢查數據庫時間戳和數據whaz你可以在服務器上的客戶端得到。比較它,你可以找到錯誤的時區。

0

jquery-timeago的作者在這裏。

As the docs reference,一切按預期在TIMEAGO(時區自動處理)工作的ISO 8601時間戳是必需的:

<time class="timeago" datetime="2008-07-17T09:24:17Z">July 17, 2008</time> 

在PHP中,獲得的ISO 8601的時間戳,這裏是一個例子片斷:

$time->format(DateTime::ISO8601);