如何获得服务器的当前日期



我正在使用此简单的代码行将当前日期纳入我的var

$datevar = date("Y-m-d"); 

但这给了我服务器的当前日期,而不是用户的服务器。我有一个页面,来自全球各地的用户登录,因此这个实际是一个问题。无论如何,我可以使用PHP获得它,或者我需要参与JS?

您可以通过两种方式进行操作。通过JavaScript将其从浏览器发送到服务器,或使用"位置by-ip"服务之一

JavaScript解决方案您可以在这里找到获取用户时区(感谢@Bennes(

但是,如果您只想在服务器端进行此服务,则可以使用此服务https://timezoneapi.io/developers/ip-address

这是示例

// Get IP address
$ip_address = getenv('HTTP_CLIENT_IP') ?: 
getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?: 
getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?: 
getenv('REMOTE_ADDR');
// Get JSON object
$jsondata = file_get_contents("http://ip-api.com/json/" . $ip_address); 
// Decode
$data = json_decode($jsondata, true);
// Example: Get the city parameter
echo "City: " . $data['city'] . "<br>";
// Example: Get the users time
echo "Time: " . $data['timezone'] . "<br>";

当然最好节省偏移到$ _Session。否则,每次都会生成传出请求。

所以您需要一些像

session_start();
if (!isset($_SESSION['offset_hours'])) {
    $ip_address = getenv('HTTP_CLIENT_IP') ?: getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?: getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?: getenv('REMOTE_ADDR');
    $jsondata = file_get_contents("http://timezoneapi.io/api/ip/?" . $ip_address);
    $data = json_decode($jsondata, true);
    if($data['meta']['code'] == '200'){
        $_SESSION['offset_hours']= $data['data']['datetime']['offset_hours'];
    }    
}

echo $_SESSION['offset_hours']; // Here is offset in hours

最新更新