我们的应用程序严重依赖 javascript (jQuery)。所以有很多 'application/json' 请求。
一段时间以来,我们一直在为日期而苦苦挣扎,但尽管我们付出了努力,但还是做不到 弄清楚如何在 ASP.NET MVC 应用程序中处理它。
这是我们想要的:
- 在服务器端序列化/反序列化 DateTime 对象(最好使用 DateTimeKind.Utc)。
- 在客户端使用日期对象。在 UTC 中使用它。以某种方式格式化日期。
问题如下:
日期客户端对象始终使用最终用户的时区。
JSON.stringify(new Date())
自动进行转换。JSON Stringify changes time of date because of UTC
这个问题有点帮助,但我们需要记住在将日期发送到服务器之前改变日期。 我们还需要记住,一旦我们执行
new Date('2012-10-19T10:23:47.778Z')
就需要换类 我们知道 JSON 不识别日期,但如果有 JSON.parse 的模拟来解析日期会很好。我们使用 Newton Json.net 来序列化/反序列化日期,但它在 DateTimeKind.Unspecified 中执行
问题:
Is there an elegant way to work with dates both on the server and client? We need it as a cross-cutting thing in the whole application.
更新:
我不得不把它说得更清楚。在我们的应用程序中,我们不需要考虑客户时区,因为我们只处理日期。
因此,如果服务器返回 2012-10-19T10:23:47.778Z'
,我们需要 Date 对象:
2012 年 10 月 19 日星期五 10:23:47 GMT+0300(加里宁格勒标准时间)
不是
2012 年 10 月 19 日星期五 13:23:47 GMT+0300(加里宁格勒标准时间)
(日期偏移)
最佳答案
我强烈建议阅读以下帖子:
这导致您应该使用 ISO 日期的一般结论:
- 在客户端使用现代浏览器
.toJSON()
方法 - 通过在服务器端正确配置 JSON 序列化(
JsonNetFormatter
和IsoDateTimeConverter
)
关于javascript - 在 ASP.NET MVC - Javascript 应用程序中处理日期的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972632/