我使用我编写的Web服务从MSSQL服务器查询一些数据。我以JSON格式获取值。为了将数据表转换为json字符串,我使用System.Web.Script.Serialization.JavaScriptSerializer
类。我有一个日期字段,在paranthesis之间变成一个长整数。
...,"startDate":"\/Date(1387231200000)\/",...
当我尝试使用gmdate()
函数将此值转换为日期字符串时,
$sDate = gmdate("d/m/Y", preg_replace('/\D/','',$jsonArray['startDate']));
我得到 18/08/1968 结果。但DB中的实际值是 17.12.2013 00:00:00 。
我也试过
$sDate = gmdate("d/m/Y", "1387231200000");
仍然会返回 18/08/1968 。
答案 0 :(得分:1)
最后我找到了解决方案。根据这里被删除的答案我可以得到几乎正确的价值。如上所述RiggsFolly,日期字符串在删除最后三个零后会关闭到所需的值。
然后我将时区更改为Europe/Istanbul
。
$sDate = createDate($jsonArray['startDate']);
函数createDate()
来了:
function createDate($date) {
$date = preg_replace('/\D/', '', substr($date, 0, -5));
$desiredDateFormatString = "d/m/Y";
$inputEpoch = preg_replace('/\D/', '', $date);
$desiredTimeZoneString = 'Europe/Istanbul';
$dateTimeObject = new DateTime(date('d.m.Y H:i:s', $inputEpoch));
$dateTimeObject->setTimezone(new DateTimeZone($desiredTimeZoneString));
$outputDateTimeString = $dateTimeObject->format($desiredDateFormatString);
return $outputDateTimeString;
}