0

我正在开发一个应用程序,我需要在其中获取用户本地 PC 的日期和时间。基本上 php 具有日期和时间函数,它返回服务器时间,因为它是服务器端脚本语言。

我正在使用 javascript Date函数获得正确的时间,但是当我在 php 中使用strtotime函数时它不起作用,我需要一种在 php 中获取本地时间的方法。

<script type="text/javascript">

function getDate() 
{ 
        var d = new Date();
    var c_day = d.getDate();
    var c_month = d.getMonth() + 1;
    var c_year = d.getFullYear();
    var c_hour = d.getHours(); 
    var c_min = d.getMinutes(); 
    var t = c_day+"-"+c_month+"-"+c_year+" "+c_hour+":"+c_min;
    return t;
}
if (window.XMLHttpRequest)
{
    xmlhttp=new XMLHttpRequest();
}
else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    { 
        alert(xmlhttp.responseText);        
    }
}    
xmlhttp.open("GET","setdate.php?sdate="+encodeURIComponent(getDate()),false);
xmlhttp.send();
</script>

文件 'setdate.php' 将 sdate 值存储在会话中,我将其作为 ajax 的输出。

<?php
$sdate = $_SESSION['sdate'];
$date = date( "d/m/Y", strtotime( $sdate ) );
?>

这在刷新页面后有效,但在页面第一次加载时无效。

任何人都可以帮助我吗?

4

5 回答 5

3

PHP 是一种服务器端语言,这意味着您根本无法获取客户端的任何数据,除非它们将其发送给您(例如,通过标头,如用户代理)。也就是说,您可以只使用 Javascript 获取客户端/浏览器日期,然后将其发送回 PHP(通过 AJAX,在 URL 中使用此数据进行重定向......)。

顺便说一句,考虑将时区添加到您的数据中。通常没有人关心它,它是万恶之源。真的。

于 2013-09-21T08:46:02.653 回答
2

你不能单独Client Side Date使用。php

对于客户端,您将需要 Javascript,如下所示应该可以解决问题。

var currentTime = new Date();

您可以使用AJAX将其发送到服务器。

var currentTime = new Date();
$.ajax({
    url : url,
    data : {date : currentTime}
});
于 2013-09-21T08:45:23.393 回答
0

使用 javascriptnew Date().getTime()从客户端获取时间。将时间传送到服务器,然后使用 phpstrftime($format, $clientTime)格式化时间。

于 2013-09-21T08:45:04.737 回答
0

没有可靠的方法可以通过服务器获取用户时间。您可以通过 javascript 将用户时间传递给 php,但这不是一种安全的做事方式。我想说最好的方法是确定用户时区并date_default_timezone_set()适当设置。

于 2013-09-21T08:46:54.053 回答
0

感谢您的建议。

最后,我通过使用 java 脚本获取本地时区并使用 java 脚本设置 cookie 解决了这个问题,从流程中删除了 PHP ... :)

于 2013-10-02T11:19:40.437 回答