【问题标题】:Local date with PHP and JavaScriptPHP 和 JavaScript 的本地日期
【发布时间】:2013-11-03 09:57:06
【问题描述】:

我想使用 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

我做错了什么?

【问题讨论】:

  • 您正在混合使用 JavaScript 和 PHP。 PHP 将在服务器上进行解释,而 JavaScript 将在客户端进行解释,因此不可能以这种方式将值从 JavaScript 提供给 PHP。您想要客户端或服务器的本地日期吗?由于 PHP 将在服务器上运行,因此只能获取服务器的日期,而 JavaScript 只能确定客户端的日期。
  • 您不能混合使用客户端和服务器端代码。
  • 你有没有检查过你的变量$day, $year, $month,什么都没有。
  • 如果我检查 $curDateString 它会得到 2013 年 11 月 1 日,所以我认为它会起作用。那么有没有办法使用php和javascript获取客户端日期呢?

标签: javascript php date local


【解决方案1】:

您的 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 call,它将从客户端传递日期值。然后,您可以在 PHP 脚本中接收此输入,在服务器端对其进行处理并相应地发回。

【讨论】:

    【解决方案2】:

    使用PHP only 非常简单:

    例如,如果您来自伦敦,您会这样做:

    date_default_timezone_set('Europe/London');

    之后你会得到时间:

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

    echo $date

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2016-02-25
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多