【问题标题】:Time Zones in PHP, Date, MySQL...?PHP、Date、MySQL 中的时区...?
【发布时间】:2011-06-21 13:09:17
【问题描述】:

我想弄清楚如何在我的 php 网站上以 PST 显示时间。 我一直在使用 NOW() 在 MySQL 数据库中添加时间戳,并像这样调用它们:

date("m/d/y g:i a", strtotime($ref['lastupdated']))

但是,服务器时间位于中部,但是,因为该网站面向 PST 时区的人们。基本上它需要在 PST 中显示。有没有办法我可以做到这一点 - 比如,取那个值并减去 2 之类的?有什么想法吗?

我也不确定我是否需要使用 PHP 路线,或者问题是否可以通过 MySQL 解决。

感谢任何想法 - 谢谢!

$query = "SELECT refid, CONCAT(fname,' ',lname) refname, email, street, city, state, zip, interestlvl, status, added, lastupdated FROM referrals WHERE affid='$affid' ORDER BY added DESC;";

$result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$Query<BR>\n");


    if ($result) {
            while ($ref = mysql_fetch_array($result, MYSQL_ASSOC))      {
                echo '


    <td bgcolor="#EFEFEF" class="list">'.
        date_default_timezone_set('America/Chicago');
        $date = new DateTime($ref['lastupdated']);
        $date->setTimezone(new DateTimeZone('America/Los_Angeles'));
        $date->format('m/d/y g:i a')
        .'</td>';
    }
    }

【问题讨论】:

    标签: php mysql date time timezone


    【解决方案1】:
    $date = new DateTime($ref['lastupdated']);
    $date->setTimezone(new DateTimeZone('America/Los_Angeles'));
    echo $date->format('m/d/y g:i a');
    

    鉴于 PSTAmerica/Los Angeles。您必须确保 date.timezone 设置为 Central 的正确时区。这可以通过php.inidate_default_timezone_set() 完成。

    然后,代码会将传入的字符串 $ref['lastupdated'] 视为位于默认时区(Central),并将日期时间转换为 *America/Los_Angeles* 时区。

    【讨论】:

    • 这很好用,但有时我会得到这样的返回值: 102/04/11 11:56 am 。不知从哪里出现了一个奇怪的“1”。我检查过它不在 HTML 中。有什么线索吗?谢谢!
    • 2011-02-04 13:56:44 是来自 MySQL 的值。然后我从代码中得到 102/04/11 上午 11:56。 :O 即使我把它改成喜欢,M/d/y 我得到 1Feb/04/11
    • 请显示所有相关代码...我非常怀疑上面的 sn-p 是否会产生此输出。
    • 对不起,我把相关代码贴在原帖里了,因为评论的格式很奇怪!
    • 我明白了!我在回声中加入了回声。我很抱歉!非常感谢!
    猜你喜欢
    • 2013-12-15
    • 2013-01-21
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多