我想要一个适应用户区域时区的php日期函数。因此,如果用户在澳大利亚,它将显示相关日期,如果用户在英国,它将显示其相关日期。
答案 0 :(得分:3)
您可以使用date_default_timezone_set
为用户设置默认时区。假设您的服务器时间正确,这将正确地抵消所有日期。
<?php
date_default_timezone_set('Europe/London');
echo date('d/m/Y H:i:s');
echo "\r\n";
date_default_timezone_set('Europe/Stockholm');
echo date('d/m/Y H:i:s');
echo "\r\n";
输出:
Rudis-Mac-Pro:~ rudi$ php tmp.php
03/05/2011 18:15:49
03/05/2011 19:15:49
您可以基于每个用户存储此设置并在登录时设置它(当然还有每次会话重新加载时)。
如果您想根据用户的位置自动执行此操作,您最好的选择可能是使用GeoLocation服务(有一个免费的IP-&gt;位置数据库,您可以轻松地整合)。当然,这不是100%可靠,你自动做的任何事都不会非常准确。你最好让他们注册并定义他们的位置,这样就不会出错!
答案 1 :(得分:0)
格式化日期时,strftime()
函数会将当前区域设置考虑在内。它类似于date()
,除了它将以给定语言环境的语言而不是英语打印像星期几或月份这样的单词。在调用strftime()之前使用setlocale()
函数设置语言环境。
setlocale(LC_TIME, "fr");
echo "Today's day in French: " . strftime("%A");