【问题标题】:DateTime Covert on data post using WebApi?DateTime 使用 Web Api 对数据发布进行转换?
【发布时间】:2013-09-18 01:05:41
【问题描述】:

我正在使用 AngularJS 开发 MVC 4 项目。我的表格中有一些日期。当我使用 $http.post() 将数据发布到服务器时,我遇到了一个奇怪的问题。当我在服务器上发布任何日期(如 2013 年 1 月 1 日)时,会在服务器上转换为 2012 年 12 月 31 日,这会导致服务器发布错误。我没有发现我的代码库出了什么问题。

希望你有我的问题。

【问题讨论】:

  • 示例代码 sn-p 会很有用,但问题似乎在于时区设置,即客户端与服务器位于不同的时区,所以最好的办法是将日期转换为 unix 日期字符串并通过再次转换发布并在服务器上检索它。
  • @Ravi 你的问题有什么进展吗?

标签: angularjs asp.net-web-api


【解决方案1】:

在处理日期时,您必须注意它们在前端和后端的序列化方式。没有标准。

鉴于您的描述和缺乏其他背景,我怀疑这是时区问题。

  • 您在本地开发吗?即浏览器和服务器是否在同一台机器上运行?
  • (如果不是)服务器使用的时区是什么? UTC?

这里有一篇文章详细介绍了 JSON 日期序列化的一些问题:"On the nightmare that is JSON Dates. Plus, JSON.NET and ASP.NET Web API"

如果您不确定序列化发生了什么,您可以使用curl(*nix 或可能是 cygwin 工具)或"Fiddler" 之类的东西来查看原始响应。其他要做的事情是显式使用日期的toString() 方法将日期序列化为字符串(并在服务器端更改,因为您正在使用.Net)来显式控制反序列化。

【讨论】:

  • 是的,我正在本地开发,时区采用 UTC (+05:30)
  • 我如何跟踪从前端到后端的日期序列化过程。
  • 这里有一篇文章详细介绍了 JSON 日期序列化的一些问题:hanselman.com/blog/…
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 2016-08-09
  • 2013-10-15
  • 2019-08-14
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多