【问题标题】:How do I get client's local time from the back end?如何从后端获取客户的本地时间?
【发布时间】:2021-10-21 22:15:34
【问题描述】:

我所做的是使用 JavaScript 获取客户端的本地时间,然后使用 Ajax 将结果发送到 php。我在 php 中对其进行操作,以在客户端本地时间显示某些时间戳的值。但是,我一直在显示服务器时间。

这是我的代码:

JavaScript

var now = new Date().toLocaleString();

xmlhttpupdates.open("POST", "updates.php", true);
xmlhttpupdates.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttpupdates.send("localnow="+now);

PHP

$localnow = $_POST["localnow"];

foreach ($allmsgsz as $allmsgs){

    $timestamp = strtotime($allmsgs[4]);
    $eventtimediff = strtotime($localnow) - $timestamp;
    $currentlocaltime = strtotime($localnow) - $eventtimediff;
    $time = date("Y-m-d (h:i a)",$currentlocaltime);
    echo $time;

}

【问题讨论】:

  • 看来您需要查看“进行一些计算”的 PHP 代码。它可能不会使用从客户端获得的输入,并自行确定日期。这当然是你描述的行为所暗示的。请注意,时间在内部存储为通用数值,并应用时区进行格式化。如果您以该格式发送日期,则服务器将不知道时区是什么,除非您也发送该时区。您也可以只向服务器发送和从服务器发送内部值,并在返回后应用时区。
  • 谢谢。这条线索确实有助于让它发挥作用。

标签: javascript php ajax timestamp localtime


【解决方案1】:

由于 PHP 仅在服务器端运行,您无法获取该信息:您需要 javascript

解决方案:

echo '<script type="text/javascript">
var x = new Date()
document.write(x)
</script>';

“回声”你可以只使用一个变量

【讨论】:

  • 问题是,在我用 JavaScript 得到日期之后,我必须将它发送到 php 以便与其他 php 变量进行一些计算。在将 JavaScript 日期变量发送到 php.ini 之后,问题就出现了。我会以服务器时间结束。
  • 最简单的方法是以 UTC 格式发送日期。 toLocaleString 去除时区信息,因此服务器不知道日期在哪个时区。你应该改用toUTCString
  • 谢谢。这解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多