首先,我知道它是重复的,但这些问题不是我想要的。
我正在使用API来添加在线应用程序中的参与者。当我将JSON对象发布到端点时,除了日期之外,所有内容都会发布。日期格式有一些误解。如果我找到现有的参与者并检查日期格式,那就是:
{
"participant":{
"ID":201954,
// Long Object
"DateOfBirth":"'/Date(857305424000-0500)'/",
}
}
我发现前9个字符是UNIX时间戳,但其他字符呢??不确定。知道这种格式是什么吗?
编辑在线应用程序是在.net/asp/c#中制作的,对它们不确定。但我正在php应用程序中编写代码,该应用程序通过cURL发布json对象
编辑2我检查了解析错误的格式,得到了这个错误:
无法将值"0.48631700 1425319593"分析为类型'Int64'.'。有关详细信息,请参阅InnerException。
知道如何在php中获得.net的int64日期时间格式吗?
JSON本身没有指定日期的格式,因此您需要了解目标.NET应用程序的要求。最有可能的是,转换为"可读"的日期格式是有意义的
示例(php):
$timestamp=1333699439;
echo gmdate("Y-m-d'TH:i:s'Z", $timestamp);
// outputs 2012-04-06T08:03:59Z
示例(.net):
DateTime d;
DateTime.TryParse("2012-04-06T08:03:59Z", out d);
// receives 4/6/2012 8:03:59 AM (in US-format)
编辑:
.NET int64格式是自午夜0001-01-01 00:00:00以来的刻度数(每个刻度为1/10000000秒),UNIX时间戳是自UNIX纪元开始(1970-01-01 01:00:00)以来的秒数,因此所需结果为$seconds=621355968000000000/100000-$number_of_seconds,请参阅将刻度转换为UNIX时间戳和https://kramerc.com/2010/11/30/converting-datetime-ticks-into-a-unix-timestamp-in-php/
因此,对于JSON输出,您应该执行
$timestamp=1333699439;
$ticks = ($timestamp * 10000000) + 621355968000000000;
// outputs 634692962390000000
测试函数php
function ticks_to_time($ticks) {
return floor(($ticks - 621355968000000000) / 10000000);
}
$time = ticks_to_time(634692962390000000);
echo date("F j Y g:i:s A T", $time);
// outputs April 6 2012 4:03:59 AM EDT
测试功能.net
Int64 intDate = 634692962390000000;
DateTime dt = new DateTime(intDate);
Console.WriteLine(dt.ToString());
// outputs 4/6/2012 8:03:59 AM