Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在通过json发送之前转换unix时间戳_Php_Javascript_Ajax_Json_Date - Fatal编程技术网

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

Php 在通过json发送之前转换unix时间戳,php,javascript,ajax,json,date,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时间戳使用: va

首先,感谢您花时间研究这一点

我将日期作为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;
}
new Date(post.date);
(您可以根据需要自定义传递给
date()
的格式字符串;
'r'
只是一个简单的默认值。)


在Javascript方面,您可以这样做:

while($row = mysql_fetch_assoc($result)) {
    $row['your_date_field'] = date('r', $row['your_date_field']);
    $posts[] = $row;
}
new Date(post.date);
当呈现为字符串时,它将格式化为默认日期格式,或者您可以使用
日期
对象上的其他方法来获取其他格式



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

当然,在PHP端,您可以这样做:

while($row = mysql_fetch_assoc($result)) {
    $row['your_date_field'] = date('r', $row['your_date_field']);
    $posts[] = $row;
}
new Date(post.date);
(您可以根据需要自定义传递给
date()
的格式字符串;
'r'
只是一个简单的默认值。)


在Javascript方面,您可以这样做:

while($row = mysql_fetch_assoc($result)) {
    $row['your_date_field'] = date('r', $row['your_date_field']);
    $posts[] = $row;
}
new Date(post.date);
当呈现为字符串时,它将格式化为默认日期格式,或者您可以使用
日期
对象上的其他方法来获取其他格式


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

使用JavaScript中的对象

alert(new Date(post.date))
注意:最好以UNIX时间戳格式一直传递它,直到呈现为止,因为:

  • 它使有效负载保持较低,因为您传输的是整数而不是字符串
  • 它使您能够在客户端上以不同的方式使用时间戳,而无需再次解析它。e、 g.
    Date.now()/1000-post.Date
    将给出创建帖子后的秒数,依此类推
  • UNIX时间戳不区分时区。在客户端上渲染时,它将采用本地时区和格式。如果在服务器上渲染,它将位于服务器的时区并使用服务器的区域设置
  • 使用JavaScript中的对象

    alert(new Date(post.date))
    
    注意:最好以UNIX时间戳格式一直传递它,直到呈现为止,因为:

  • 它使有效负载保持较低,因为您传输的是整数而不是字符串
  • 它使您能够在客户端上以不同的方式使用时间戳,而无需再次解析它。e、 g.
    Date.now()/1000-post.Date
    将给出创建帖子后的秒数,依此类推
  • UNIX时间戳不区分时区。在客户端上渲染时,它将采用本地时区和格式。如果在服务器上渲染,它将位于服务器的时区并使用服务器的区域设置

  • 这两个答案都解决了你的问题吗?这两个答案都解决了你的问题吗?我想把它们都选为最佳答案,但不幸的是我不能!谢谢你们的回答。这帮我解决了我的问题!:)不用担心-我并不需要代表:)我想把他们两个都选为最佳答案,但不幸的是我不能!谢谢你们的回答。这帮我解决了我的问题!:)不用担心,我并不需要代表:)