在通过json发送之前转换unix时间戳

时间:2012-04-04 22:57:26

标签: php javascript ajax json date

首先感谢您花时间研究这个问题。

我将日期作为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发送之前将其转换为可读日期?甚至之后呢?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分: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对象上的其他方法来获取其他格式。


你使用哪种方法取决于你,但正如龙指出的那样,做客户端往往更好,因为它既减少了传输的数据又提供了更大的灵活性而无需解析字符串。

答案 1 :(得分:2)

在JavaScript中使用Date对象。

alert(new Date(post.date))

注意:最好以UNIX时间戳格式一直传递它,直到呈现为止,因为:

  1. 它保持有效负载低,因为您传输的是整数而不是字符串。
  2. 它使您能够在客户端上以不同方式使用时间戳,而无需再次解析它。例如Date.now()/1000 - post.date将为您提供自帖子创建以来的秒数,依此类推。
  3. UNIX时间戳不是时区敏感的。在客户端呈现时,它将采用本地时区和格式。如果你在服务器上呈现它,它将在服务器的时区并使用服务器的语言环境设置。