如何获取用户的本地时间而不是服务器的时间?

时间:2010-04-24 15:45:56

标签: php javascript

如何获得客户端的时间? 当我使用date()时,它会返回服务器的时间。

7 个答案:

答案 0 :(得分:38)

这是一个“PHP”解决方案:

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

答案 1 :(得分:27)

正如大家所提到的,PHP只显示服务器端时间。

对于客户端,您需要使用Javascript,类似下面的内容应该可以解决问题。

var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();

if (minutes < 10) {
    minutes = "0" + minutes;
}

document.write("<b>" + hours + ":" + minutes + " " + "</b>");

如果你想要AM / PM后缀,那么以下内容应该有效:

var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();

var suffix = "AM";

if (hours >= 12) {
    suffix = "PM";
    hours = hours - 12;
}

if (hours == 0) {
    hours = 12;
}

if (minutes < 10) {
    minutes = "0" + minutes;
}

document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>");

以下是a list of additional JavaScript Date and Time functions你可能会搞乱。

答案 2 :(得分:4)

您可以按地址使用地理位置来确定用户所在的国家/地区,然后使用该地址。

但是使用Javascript或让用户选择时区可能会更好。

答案 3 :(得分:3)

当PHP在服务器端运行时,你无法从PHP访问客户端时间:PHP对浏览器了解不多 - 你可以拥有PHP脚本在没有从浏览器调用的情况下运行。

你可以从Javascript (在客户端执行)获取它,然后通过Ajax请求将其传递给PHP,例如


以下是一些可能有助于您入门的问题+答案:

答案 4 :(得分:1)

就我所知,PHP只是服务器端。

您可能想要使用JavaScript。

答案 5 :(得分:0)

正如其他人所述,您可以基于IP地址使用地理位置服务。

由于IP位置的准确性,我发现它关闭了大约18秒,通过使用$ responseTime偏移量,它帮助我将其缩小到了Viewers Location中的2秒精度。

  <?php; 

   echo deviceTime('D, M d Y h:i:s a');

   function deviceTime($dateFormatString)
   { 
        $responseTime = 21;
        $ip = (isset($_SERVER["HTTP_CF_CONNECTING_IP"])?$_SERVER["HTTP_CF_CONNECTING_IP"]:$_SERVER['REMOTE_ADDR']);
        $ch = file_get_contents('https://ipapi.co/'.$viewersIP.'/json/');
        $ipParts = json_decode($ch,true);
        $timezone = $ipParts['timezone'];
        $date = new DateTime(date('m/d/Y h:i:s a', time()+$responseTime));
        $date->setTimezone(new DateTimeZone($timezone));
    return $date->format($dateFormatString);
   }
   ?>

答案 6 :(得分:-1)

您可以使用我们的geoip API,该API公开所需IP的当前时间以及其他与时区相关的信息。只需转到https://smartip.io并注册即可获得一个免费的API密钥,该密钥每月可在Free层中进行250,000个IP请求。 这是使用我们的API的便捷程度:

$.ajax ({
  type: "GET", 
url:"https://smartip.io/api/112.126.34.5/?api_key=[YOUR_API_KEY]",
success: function(response) { alert(response); }
});

响应对象将包含您所需的时区信息,以及许多其他信息:

"timezone": {
    "iana-name": "America/New_York",
    "microsoft-name": "Eastern Standard Time",
    "date-time": "2019-07-05T20:54:23-05:00",
    "is-daylight-saving": true,
    "gmt-offset": -18000
}