Javascript字符串计算从PHP变量包含数学表达式(但实际上是一个日期)

javascript string evaluation from php variable that contains mathematical expression (but is actually a date)

本文关键字:实际上 日期 一个 表达式 计算 字符串 PHP 变量 包含数 Javascript      更新时间:2023-09-26

我有以下javascript函数。该函数实际上填充了一个jquery日期选择器,但对于这个问题,我删除了该代码,因为它不相关。

function PrintDateToConsole() {
    var testDate;
    <?php
        $test_date = date("Y-m-d", time());
        printf("testDate=$test_date;'n");
    ?>
    console.log(test_date);
}

当我运行这段代码时,在控制台中打印的结果是1978(今天的日期2014-6-30 = 1978)。

为什么日期字符串被评估为一个数学表达式,我怎么能防止它?

注意:我很确定这是一个javascript问题,而不是一个php问题,因为当我在页面上查看源代码时,我看到:

function PrintDateToConsole() {
    var testDate;
    testDate=2014-06-30;
    console.log(test_date);
}

Replace:

printf("testDate=$test_date;'n");

:

printf("testDate='$test_date';'n");

日期在JavaScript中不是作为字符串传递的。相反,您可以在JS中使用减法运算符放置一些数字。
修改将把它作为一个String传递,正确地:

testDate='2014-06-30';

在JavaScript中,这个一个计算:

testDate=2014-06-30;

要获取日期,可以使用

printf("testDate=new Date('$test_date');'n");

但是当您从时间戳开始时,没有必要先进行格式化,然后再进行解析。你只需要执行

printf("testDate=new Date(".time().");'n");

这还有一个额外的好处,可以避免由于服务器和用户浏览器之间的时区不同而导致的错误。