繁体   English   中英

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

[英]Converting unix timestamp before sending it by json

首先感谢您抽出宝贵时间对此进行调查。

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

非常感谢你的帮助。

当然,从 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 object 上使用其他方法来获取其他格式。


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

在 JavaScript 中使用日期object。

alert(new Date(post.date))

注意:最好以 UNIX 时间戳格式一路传递直到渲染,因为:

  1. 它保持低负载,因为您传输的是 integer 而不是字符串。
  2. 它使您能够在客户端以不同的方式使用时间戳,而无需再次解析它。 例如Date.now()/1000 - post.date将为您提供自帖子创建以来的秒数,等等。
  3. UNIX 时间戳对时区不敏感。 在客户端呈现时,它将采用当地时区和格式。 如果您在服务器上渲染它,它将处于服务器的时区并使用服务器的区域设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM