如何将来自Web Service的Date值转换为PHP中的日期字符串?

时间:2014-12-17 11:39:53

标签: php sql-server json web-services date

我使用我编写的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

1 个答案:

答案 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;
}