如何获得客户端的时间?
当我使用date()
时,它会返回服务器的时间。
答案 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
}