2012-04-04 22 views
1

首先感謝您抽出寶貴時間來研究這個問題。在發送json之前轉換unix時間戳

我存儲的日期在我的數據庫爲unix時間戳,當我開始使用的所有信息:

 while($row = mysql_fetch_assoc($result)) { 
     $posts[] = $row; 
    } 
    /* return the posts in the JSON format */ 
    return json_encode($posts); 

的日期只能作爲一個Unix時間戳,當我試圖讓使用下面的吧:

var postHandler = function(postsJSON) { 
$.each(postsJSON,function(i,post) { 
alert(post.date); 
} 
} 

有沒有辦法將它轉換爲可讀日期,然後再通過JSON發送它?甚至之後呢?

非常感謝你的幫助。

+0

沒有答案解決您的問題? – dragon 2012-04-10 00:53:29

回答

2

在JavaScript中使用Date對象。

alert(new Date(post.date)) 

注:這是最好的一路在UNIX時間戳格式通過它,直到呈現,這是因爲:

  1. 它使有效載荷低,因爲你傳遞一個整數,而不是一個字符串。
  2. 它使您能夠以不同方式在客戶端上使用時間戳,而無需再次解析它。例如Date.now()/1000 - post.date會爲您提供自創建帖子以來的秒數,依此類推。
  3. UNIX時間戳不是時區敏感的。在客戶端呈現時,它將以當地時區和格式顯示。如果你在服務器上渲染它,它將在服務器的時區並使用服務器的區域設置。
2

當然,從PHP端你可以做這樣的:

while($row = mysql_fetch_assoc($result)) { 
    $row['your_date_field'] = date('r', $row['your_date_field']); 
    $posts[] = $row; 
} 

(可以自定義傳遞到date(),請你格式化字符串; 'r'只是一個簡單的默認。)


從JavaScript端,你可以做這樣的:

new Date(post.date); 

將其呈現爲字符串時將格式化爲默認日期格式,或者您可以使用Date對象上的其他方法獲取其他格式。


你用哪種方法是你的,但龍指出,這樣做的客戶端往往是更好,因爲它既降低了數據傳輸,讓您更多的靈活性,而不必解析字符串。

+0

我想挑選他們兩個作爲最佳答案,但不幸的是我不能!所以謝謝你的答案。這幫助我解決了我的問題! :) – moonwalker 2012-04-20 16:43:00

+1

不用擔心 - 這不像我需要的代表。 :) – Amber 2012-04-20 16:44:51