PHP和javascript:以json形式传递新日期


PHP and javascript: pass new Date as json

我使用谷歌图表表。在DataTable中,我需要一个日期,例如,javascript代码必须如下:

rows: [{c:[{v: 'Mike'}, {v: new Date(2008, 1, 28), f:'February 28, 2008'}]},

我怎样才能通过

new Date(2008, 1, 28)

作为php中的json对象?

我做过:

....
array('v' => "new Date($timeStamp)");
...
$output = json_encode($table);

但在javascript中,我接收new Date(2008, 1, 28)作为字符串,并且不实例化新的日期。

如何实例化新的Date()?

感谢

您可以在javascript:中执行此操作

var date = eval("new Date(2008, 1, 28)"); // Here should paste the string that you receive.

这应该会评估它。

您想要获取的JavaScript对象不是JSON,因为JSON不允许new关键字,也不允许调用函数(如Date())。

您可以做的是远离纯JSON,比如:

<?
$timeStamp = time (); // UNIX epoch
$table = array(
    array('v' => 31415926535), // some unique number, that does not occur elsewhere
);
$output = json_encode($table);
// Alter JSON, and now you cannot call it JSON anymore:
$output = str_replace($table[0]['v'], "new Date($timeStamp)", $output);
?>
<script>
    var table = {
        ...
        rows: <?= $output ?>,
        ...
    };
    ...
</script>

请确保$timeStamp是一个表示UNIX epoch的数字(如abopve示例),或者是一个字符串,格式良好,可供JavaScript解释为日期。在后一种情况下,您需要将$timeStamp用单引号括起来。