我使用DataContractJsonSerializer在DateTimeOffset数据类型中序列化了包含当前日期的对象。这就是我得到的结果:
<root type="object">
<blah type="object">
<DateTime>/Date(1315565372414)/</DateTime>
<OffsetMinutes type="number">300</OffsetMinutes>
</blah>
</root>
我如何理解这一点?我怎么能将1315565372414转换回日期? 我的客户端正在python中接收这个东西,并希望将其更改回日期。 我不确定这些是自纪元以来的刻度还是秒,但它们都会产生不正确的结果。 以下是我在.net中的代码将其转换回来,但结果是荒谬的
Console.WriteLine(new DateTime(1970, 1, 1).AddTicks(1315565372414));
如果我尝试AddSeconds;它会使值超出范围异常。
以下是我如何序列化日期:
[DataContract]
public class Test
{
[DataMember]
public DateTimeOffset blah { get; set; }
}
var serializer = new DataContractJsonSerializer(typeof(Test));
var writer = new StringWriter();
serializer.WriteObject(new XmlTextWriter(writer), new Test() { blah = DateTimeOffset.Now });
string output = writer.ToString();
Console.WriteLine(output);
答案 0 :(得分:3)
这是自纪元以来的毫秒数。要反序列化,我们需要做以下事情:
var date = new DateTime(1970, 1, 1).AddMilliseconds(1315565098519);
var dateWithOffset = new DateTimeOffset(date, TimeSpan.FromMinutes(300));
参考文献: