1

我将日期以 DATETIME 类型存储在我的数据库中,如下所示: Ymd H:i:s

我想要实现的是在用户本地时间从数据库中返回日期。例如,如果用户在法国,我将返回他的时区。是否可以在不存储用户时区的情况下实现这一目标?或者如果有其他可能,并且需要更改数据库中的存储格式,那么我可以这样做。但是,我试图在不存储用户时区的情况下实现这一点。

4

3 回答 3

2

将时间以 UTC 格式存储在数据库中,然后在您的应用程序中进行时区本地化。不过,您需要知道用户的时区。

于 2012-04-13T15:50:48.597 回答
1

好吧,我能想到的唯一方法是在不询问用户他们的时区的情况下这样做:

<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 将区域设置(包括时区)应用到该时间戳。

于 2012-04-13T15:52:03.613 回答
1

如果您将日期存储在 GMT 中,那么您可以在他们的时区将它们呈现给用户。

编辑:

 date_default_timezone_set('UTC');
 $today = getdate();
 print_r($today);

检查这个:php 将日期时间转换为 UTC 和这个:将 UTC 日期转换为 PHP 中的本地时间 ,这个:http ://www.php.net/manual/en/function.gmdate.php

于 2012-04-13T15:52:17.300 回答