c# - JSON解析日期时间

标签 c# angularjs json wcf json.net

从服务器我得到这个字符串

[{\"id\":\"9b77ff1e-350e-44d8-8860-15e80f4d8a22\",\"code\":\"C\",\"name\":\"0%\",\"validFrom\":\"2013-07-01T00:00:00Z\",\"validTill\":null,\"active\":1,\"vatProc\":0.0,\"createdAt\":\"2015-02-01T13:04:17.733Z\",\"updatedAt\":\"2015-02-01T13:04:17.733Z\"}]

在客户端,我使用 JSON.parse 将其转换为 json 对象,生成结果:

[
{
active:1
code:"C"
createdAt:"2015-02-01T13:04:17.733Z"
id:"9b77ff1e-350e-44d8-8860-15e80f4d8a22"
name:"0%"
updatedAt:"2015-02-01T13:04:17.733Z"
validFrom:"2013-07-01T00:00:00Z"
validTill:null
vatProc:0
}
]

如果不是日期字段,这正如您所期望的那样。

服务器上的日期已转换为 UTC。

我知道我可以传递一个函数来解析该函数​​以进行转换。 我只想格式化日期,以便常规解析能够“正确”执行(如果您知道我的意思的话)

我在网上看到没有“正确”的方法,而且我在网上读到的每一个案例都是在客户端进行转换。

那么真的没有办法告诉常规 json 解析器这是一个日期吗?

我可以选择将该日期时间转换为服务器上可以使用的日期时间

客户端: AngularJS

服务器端: C# WCF/json

编辑:

我遇到的问题是,如果我使用 ValidFrom 作为 AngularJS 中的模型,它会提示它不是日期女巫,它实际上不是

AngularJS 错误:

Expected `2013-07-01T00:00:00Z` to be a date

最佳答案

在向客户端发送日期之前,我将 DateTimeKind 属性设置为 utc

SomeObject.Date=  DateTime.SpecifyKind(SomeObject.Date, DateTimeKind.Utc);

在将任何日期保存到服务器之前,我会执行以下操作:

SomeObject.Date=  SomeObject.Date.ToUniversalTime();

客户端的唯一要求是使用 momentjs format() 方法将日期转换为 ISO-8601

遵循此方法 JSON 始终可以在客户端正确处理时间(至少到目前为止对我来说效果很好)

This helped me a lot

关于c# - JSON解析日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889927/

相关文章:

javascript - 由于子指令引发的事件而操作父指令的 DOM

javascript - angularJS $http get 中的可选参数

java - 如何将字节流图像数据放入JSON对象中?

c# - DI : Injecting ActionFilterAttribute implementation (ASP. NET MVC)

c# - "is"的反义词是什么?

c# - Parallel.Foreach 委托(delegate)调用另一个委托(delegate)

javascript - Jasmine 测试 $log 装饰器

json - 重新格式化 JSON 数据以适应树状存储

php - 从文件夹或mysql数据库收集文件列表?

C# 泛型和类型检查