如何通过当前用户的默认时间发布文章

时间:2014-08-21 02:20:25

标签: php function date time timezone

在所有问题中,我不知道从哪里开始,这听起来非常复杂,如果不是不可能,但没有点放弃而不问这个很棒的网站;)

反正 我想要做的是检测什么时候发布的东西取决于那里的国家,例如:

如果在澳大利亚,布里斯班是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";

2 个答案:

答案 0 :(得分:0)

在您的情况下,使用时区显示时间非常简单。

我假设当你存储帖子时,你知道日期时间+一个时区让我们说它是utc

然后当用户打开帖子时 对于他的ip或其他方法,你也知道他的时区 然后显示日期如下 1-设置ttime区域与php日期时间类

来自php的例子     格式( 'Y-M-d H:I:SP')。 “\ n” 个;

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";

答案 1 :(得分:0)

此问题的一个常见解决方案是将所有内容存储在UTC中。显示值时,将UTC值传递给浏览器(在API响应或隐藏的HTML字段中),然后使用JavaScript将UTC值加载到Date对象中。

由于JavaScript Date对象在用户的浏览器中运行,因此它可以从UTC转换为用户的本地时区,而无需知道该时区是什么。

唯一的缺点是在某些情况下as described here可能不准确。不过,这通常是一种很好的方法。