我正在从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 输出时间?
您应该在读取数据库结果集时进行更改:
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 格式,该格式在日期和时间之间有一个T
,以及附加为+hh:mm
的额外时区偏移(冒号是可选的):
$r['DateSubmitted'] =
date("Y-m-dTH:i:s+03:00", strtotime($r['DateSubmitted'].'+3 hours'));