kab*_*oom 7 .net javascript datetime json.net asp.net-web-api
数据库中的数据如下所示
2011-09-07 14:43:22.520
Run Code Online (Sandbox Code Playgroud)
但我的Web API输出数据并用字母T替换空格
2011-09-07T14:43:22.520
Run Code Online (Sandbox Code Playgroud)
我可以在jquery中再次用空格替换字母T,但是我可以从Web API修复此问题(使web api输出原始数据吗?)
我也不想在最后的几毫秒.我怎么能摆脱他们?
Mat*_*int 31
您在数据库中看到日期的方式通常是无关紧要的,因为它应该作为一个DateTime- 而不是作为一个string.(如果将其存储为varchar数据库中的数据库,则会出现更大的问题.)
ASP.Net WebAPI以ISO8601和RFC3339定义的格式返回值.这是一件好事,因为它是公认的机器可读格式.你可能不想改变它.
如果你真的想要改变它,你需要实现一个自定义的JSON.Net JsonConverter,派生自DateTimeConverterBase.这将在这里和这里讨论.
但相反,您应该考虑如何在客户端应用程序中使用实际结果.你提到了jQuery,所以我假设你的消费者是JavaScript.在许多浏览器中,您拥有的ISO8601值已经被JavaScript Date构造函数识别,因此您可以这样做:
var dt = new Date("2011-09-07T14:43:22.520");
Run Code Online (Sandbox Code Playgroud)
但这不适用于所有浏览器.并且Date在格式化方面没有很大的灵活性.所以相反,你可能想要考虑一个像moment.js这样的库.有了这个,你可以这样做:
var m = moment("2011-09-07T14:43:22.520");
var s = m.format("YYYY-MM-DD HH:mm:ss"); // output: "2011-09-07 14:43:22"
Run Code Online (Sandbox Code Playgroud)
请注意,此处的格式字符串符合moment.js,而不符合.NET.区分大小写有所不同.有关详细信息,请参阅moment.js文档.
另一件事 - 因为你提供的值Z在最后没有a ,也没有像这样的偏移量-07:00,那么我认为它来自DateTimewhos .Kind值DateTimeKind.Unspecified.您应该知道,当它被发送到JavaScript(或其他任何地方)时,没有关于代表什么时区的信息.JavaScript将采用浏览器的本地时区.
如果那不是你想要的,那么你需要在你的数据库中存储UTC值,并确保它们已经在最后DateTimeKind.Utc用序列化Z.JavaScript会将此规范化为浏览器的时区,但您仍然会在同一时刻讨论.
或者,您可以使用DateTimeOffset类型 - 它将使用特定偏移量进行序列化.JavaScript仍会将此规范化为用户的时区.
| 归档时间: |
|
| 查看次数: |
6410 次 |
| 最近记录: |