PHP - 如何在将数据从MYSQL提取到JSON时从UTC更改日期时间?

时间:2016-03-06 17:54:52

标签: php mysql json datetime

我从MYSQL数据库中提取一些数据,其中我有一个以UTC格式存储的日期时间,然后将所有内容转换为JSON。我需要完成的是我希望以UTC + 3显示此日期时间,而不是UTC。

这就是我在做所有事情的方式:

function getValues() {

    $sth = mysql_query($query);
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows['announcements'][] = $r;
    }
    print json_encode($rows);

}

这是我得到的输出(示例):

{
    "announcements":[
        {"id":"1","Title":"Title One","Details":"Detail of One","Submitter":"Alaa Alrufaie","DateSubmitted":"2016-03-06 17:03:48"},
        {"id":"7","Title":"Title Seven","Details":"Detail of Seven","Submitter":"Alaa Alrufaie","DateSubmitted":"2016-03-06 17:23:44"}
    ]
}

如何在保持相同的JSON结构的同时输出UTC + 3的时间?

1 个答案:

答案 0 :(得分:0)

您应该在阅读数据库结果集时进行更改:

while($r = mysql_fetch_assoc($sth)) {
    $r['DateSubmitted'] =
        date("Y-m-d H:i:s", strtotime($r['DateSubmitted'].'+3 hours'));
    $rows['announcements'][] = $r;
}

然而,我也会将时区信息添加到日期,因此JSON数据的使用者知道它是UTC + 3。为此,您应该使用ISO 8601 format,其日期和时间之间有T,附加的时区移位为+hh:mm(冒号是可选的):

    $r['DateSubmitted'] = 
        date("Y-m-d\TH:i:s+03:00", strtotime($r['DateSubmitted'].'+3 hours'));