需要使用PHP以下列格式在JSON帖子中发送日期
\/Date(410256000000-0800)\/
如何在PHP中将标准dd-mm-yyyy h:i:s
日期时间(如01-01-2013 12:00:00
)转换为该格式?只需知道哪些值对应于该格式的内容,而不是真正寻找stringify
事情的答案。
答案 0 :(得分:3)
这应该这样做:
$dateTime = DateTime::createFromFormat('d-m-Y H:i:s', '01-01-2013 12:00:00');
$requiredJsonFormat = sprintf(
'\/Date(%s%s)\/',
$dateTime->format('U') * 1000,
$dateTime->format('O')
);
echo $requiredJsonFormat; // prints '\/Date(1357038000000+0100)\/'
我希望您能找到U
和O
来自http://php.net/date的格式。
另一种方法是使用PHP的DOTNET API并直接从PHP使用DataContractJsonSerializer
类。但是,您需要在服务器上安装.NET并使用PHP的DOTNET API相当神秘。
更有趣的部分是你需要这种格式的原因。这在http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx
的博文中有解释但是由于EcmaScript规范中的一个奇怪的疏忽,没有标准的方法来描述JSON中的日期。 [...]我们目前的方法是在JSON规范中使用一个小漏洞。在JSON字符串文字中,您可能(或可能不)转义某些字符。在这些角色中,奇怪的是,有斜线字符('/')。 [...]新格式为“/ Date(1198908717056)/”,其中该数字再次是自1970年1月1日UTC以来的毫秒数[...]重点是,这消除了一个看起来像同一日期的字符串的日期文字的歧义literal,同时保留纯JSON,将由任何标准JSON解析器解析。当然,一个不了解这个约定的解析器只会看到一个字符串,但是那些能够解析那些作为日期而没有误报风险的解析器
答案 1 :(得分:1)
我们为此创建了一个软件包:https://github.com/webapix/dot-net-json-date-formatter
它使用与上一个答案类似的方法,并在PHP版本> = 5.6上进行了测试。
expirationDateTime