从PHP5.3开始(我认为)它需要date.timezone在php.ini文件中设置,或者通过date_default_timezone_set()函数在运行时设置.当你没有设置这个值时,你得到一个错误,就像这样:
PHP警告:date():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们选择'America/New_York'为'-4.0/DST'而不是在LINE上的FILE中.
我想知道它用什么机制来猜测时区,因为它似乎非常准确,我想知道自己,所以我可以以更友好的方式向用户呈现这个错误,或者让他们接受这个作为正确的时区.
迈克的方法只能让你获得网络服务器的时区.我相信你正试图获得用户的时区.我用jQuery和PHP编写了一个函数.经过测试,确实有效!
在您希望将时区作为变量的PHP页面上,将此代码段放在页面顶部附近:
<?php
session_start();
$timezone = $_SESSION['time'];
?>
Run Code Online (Sandbox Code Playgroud)
这将读取会话变量"time",我们现在要创建它.
在同一页面上,您需要首先包含jQuery:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
同样在jQuery下面,粘贴这个:
<script type="text/javascript">
$(document).ready(function() {
if("<?php echo $timezone; ?>".length==0){
var visitortime = new Date();
var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
$.ajax({
type: "GET",
url: "http://domain.com/timezone.php",
data: 'time='+ visitortimezone,
success: function(){
location.reload();
}
});
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到或未注意到,但您需要将URL更改为您的实际域.
最后一件事.你可能想知道什么是timezone.php.嗯,就是这样:(创建一个名为timezone.php的新文件,并使用上面的url指向它)
<?php
session_start();
$_SESSION['time'] = $_GET['time'];
?>
Run Code Online (Sandbox Code Playgroud)
如果这样可以正常工作,它将首先加载页面,执行JavaScript并重新加载页面.然后,您将能够阅读$ timezone变量并将其用于您的乐趣!它返回当前的UTC/GMT时区偏移量(GMT -7)或您所在的任何时区.
干杯
</Westy92>