我从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的时间?
答案 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'));