【发布时间】:2012-04-13 15:48:40
【问题描述】:
我将日期以 DATETIME 类型存储在我的数据库中,如下所示:Y-m-d H:i:s
我想要实现的是在用户本地时间从数据库中返回日期。例如,如果用户在法国,我将返回他的时区。是否可以在不存储用户时区的情况下实现这一点?或者如果有其他可能,并且需要更改数据库中的存储格式,那么我可以这样做。但是,我试图在不存储用户时区的情况下实现这一目标。
【问题讨论】:
我将日期以 DATETIME 类型存储在我的数据库中,如下所示:Y-m-d H:i:s
我想要实现的是在用户本地时间从数据库中返回日期。例如,如果用户在法国,我将返回他的时区。是否可以在不存储用户时区的情况下实现这一点?或者如果有其他可能,并且需要更改数据库中的存储格式,那么我可以这样做。但是,我试图在不存储用户时区的情况下实现这一目标。
【问题讨论】:
在数据库中以 UTC 格式存储时间,然后在您的应用程序中进行时区本地化。不过,您需要知道用户的时区。
【讨论】:
getTimezoneOffset() 方法向服务器报告,我相信 DST 已经计入偏移量。
嗯,在不询问用户他们的时区的情况下,我能想到的唯一方法是:
<p>The time is: <span id="time" data="<?php echo strtotime($time_from_db); ?>"></span></p>
<script type="text/javascript">
(function () {
var t = document.getElementById('time'), d = new Date();
d.setTime(t.getAttribute("data"));
t.innerHTML = d;
})();
</script>
这会将日期时间作为时间戳传递,然后 JS 将区域设置(包括时区)应用到该时间戳。
【讨论】:
如果您将日期存储在 GMT 中,那么您可以按照他们的时区将它们呈现给用户。
编辑:
date_default_timezone_set('UTC');
$today = getdate();
print_r($today);
检查这个:php convert datetime to UTC 这个:Convert UTC dates to local time in PHP 还有这个:http://www.php.net/manual/en/function.gmdate.php
【讨论】: