0

我想使用 PHP 和 JavaScript 来回显当前的本地日期(而不是服务器日期)。

我的代码如下:

<?php

$year = '<script type="text/javascript">
    var date = new Date();
    var year = date.getFullYear();
    document.write(year);
    </script>';

$month = '<script type="text/javascript">
    var date = new Date();
    var month = date.getMonth();
    var monthName = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "november", "December");
    var curMonth = monthName[month];
    document.write(curMonth);
    </script>';

$day='<script type="text/javascript">
    var date = new Date();
    var day = date.getDate();
    document.write(day);
    </script>';

$curDateString = $day . " " . $month . " " . $year;
$curDate = date('m/d/y', strtotime($curDateString));
echo $curDate;

?>

它总是返回01/01/70

我究竟做错了什么?

4

2 回答 2

0

您的 JavaScript 代码将在客户端而不是服务器端执行。这意味着 JavaScript 代码不会在服务器端进行评估,因此字符串$curDateString不会具有您认为的值。

正常echo $curDateStringvar_dump($curDateString)将输出3 november 2013- 这是因为默认Content-Typetext/html. 变量内的代码$curDateString将在客户端执行,输出为3 november 2013.

要了解$curDateString真正包含的内容,您可以执行以下操作:

header('Content-Type: text/plain');
var_dump($curDateString);

这将输出如下内容:

string(587) "<script type="text/javascript">
    var date = new Date();
    ...
    </script>

对于 PHP,这是随机的胡言乱语。然后您strtotime()在上面的字符串上使用,但它失败并将01/01/70作为输出返回。

为了实现您想要的,您可以进行AJAX 调用,该调用将从客户端传递日期值。然后,您可以在 PHP 脚本中接收此输入,在服务器端对其进行处理并相应地发回。

于 2013-11-03T10:09:22.960 回答
0

使用非常简单PHP only

例如,如果您来自伦敦,您会:

date_default_timezone_set('Europe/London');

之后你会得到时间:

$date = date('m/d/Y h:i:s a');

echo $date

于 2013-11-03T12:11:10.677 回答