在所有问题中,我不知道从哪里开始,这听起来很复杂,如果不是不可能的话,但没有必要放弃,而不问这个很棒的网站;)
,我要做的是检测什么时候发布的东西取决于在哪个国家,例如:
如果在澳大利亚,布里斯班是2014年8月21日下午12:17,在美国,纽约说,例如:今天是2014年8月20日,根据你住的地方,它会准确地告诉你是什么时候发布的。所以它会说它是在8月21日发布的,因为那是发布的时间,如果你在美国,它会说那个时间。(我想让它舒适地环游世界)我会把默认时区设置为澳大利亚吗?担心这可能有点烦人,因为不是每个人都住在这里
谢谢!
编辑:找到一些似乎运行良好的代码,这是否足够好?
$timezone = "UTC";
date_default_timezone_set($timezone);
$utc = "Aug 11 2014 02:42:38 AM";
$timezone = "Australia/Perth";
date_default_timezone_set($timezone);
$offset = date('Z', strtotime($utc));
print "LOCAL: " . date('r', strtotime($utc) + $offset) . "n";
用时区显示时间对您来说很容易。
我假设当你存储一个帖子时你知道日期时间+时区假设它是utc
当用户打开帖子时对于他的ip地址或其他方法,你也知道他的时区那么显示日期如下所示1-用PHP的datetime类设置时区
来自php示例格式('Y-m-d H:i:sP')。" n";
$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "n";
这个问题的一个常见解决方案是将所有内容存储在UTC中。当显示值时,将UTC值传递给浏览器(在API响应或隐藏的HTML字段中),然后使用JavaScript将UTC值加载到Date
对象中。
由于JavaScript Date
对象在用户的浏览器中运行,因此它可以从UTC转换为用户的本地时区,而无需您知道该时区是什么。
唯一的缺点是在某些情况下它可能是不准确的,如下所述。尽管如此,这通常是一个好方法。