【发布时间】:2016-10-23 13:09:26
【问题描述】:
我有一个 Angular 应用程序,它需要日期(仅日期而不是时间)并将它们发布到 Web API 2 REST 服务。当来自印度的人由于时区问题使用该应用程序时,我们遇到了问题。
目前,Angular 应用程序正在将日期转换为 UTC 时区的 ISO8601 格式,并将它们发送到 Web API。当在 Web API 端接收数据时,日期最终不正确。如果将 2016 年 6 月 21 日输入表格,则日期最终会变为 2016 年 6 月 20 日。所需的解决方案是将表单中输入的实际日期值设为 API 接收到的日期值。
一种建议的解决方案是将日期视为字符串而不是日期,然后只传递日期部分。这对我来说似乎是一种黑客行为,而且似乎不是“正确”的做法。
处理这种情况的正确方法是什么?
鉴于应用程序具有大量日期字段输入这一事实,是否有一种简单的方法可以针对所有日期输入值实施解决方案?
【问题讨论】:
-
在任何日期时间选择器控件中使用
momentjs(您没有提到它是字段还是控件)。提取要发送到服务器的日期时,将其提取为 ISO8601 格式的字符串。将其发送到服务器并在服务器端使用 DateTime 对象,该对象应使用 DateKind.Utc 标志反序列化日期。对于反向将日期视为 Angular 中的字符串,webapi(使用 json.net 时)会将日期时间序列化为 ISO 表示法。
标签: angularjs date asp.net-web-api2 iso8601