angularjs - Web API 仅日期 UTC 转换

标签 angularjs timezone asp.net-web-api utc

我正在开发一个项目,该项目有一个 ASP.NET Web API 服务,该服务使用 AngularStrap 日期选择器从 Angular 客户端接受 DateTime 值。我们有一个字段表示某事发生的日期,对于这个字段,时间部分并不重要。客户端将日期选择器值作为 UTC 发送,并带有相对于用户时区的时间分量,但是在存储日期时,我们将其存储为 UTC 而没有时间,因为时间不相关,例如 2014-05-08 00:00: 00.000Z。

当客户端检索日期时,服务器再次将其作为 UTC 发送回,时间值全为零。但是,客户端正在将其从 UTC 转换回本地时区,导致显示给用户的日期向 future 一天偏移。

当我真的不关心时间时,如何绕过 UTC 转换?我应该从服务器返回一个相对于用户时区的预转换日期值吗?有什么办法可以一起忽略时间分量吗?

最佳答案

笼统回答,因为很难从您目前的描述中看出任何具体内容。

  • 没有时间的日期不是适合 JavaScript Date 对象或 .Net DateTime 对象.

  • 由于这两种语言本身都没有提供真正的纯日期数据类型,您可以考虑将其保留为 ISO-8601 格式的字符串 ("YYYY-MM-DD")

  • 如果您需要在 .Net 中使用仅限日期的值,请考虑使用 Noda Time 中的 LocalDate 类型.

  • 每当您使用日期+时间组件通过将时间设置为全零来表示仅限日期的值时,您就是将该时间固定为午夜。

    • 对于本地时区,这是有问题的,因为在世界的某些地方,午夜不存在在 Spring 夏令时过渡的那一天。 (示例:Brazil)

    • UTC 也不是一个很好的选择,因为在美洲的大多数时区,UTC 午夜都在前一天。

  • 很多时候,不带时间的日期指的是 一天,或者结束。使用 zeros 会将其置于一天的开始。假设 2014-01-01 到 2014-01-02 是两天,即 48 小时。但是 2014-01-01T00:00:00 到 2014-01-02T00:00:00 只跨越 24 小时。这是许多错误的原因。

如果您愿意编辑您的问题以提供具体的代码来演示问题,我可以提供更具体的建议。

关于angularjs - Web API 仅日期 UTC 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925597/

相关文章:

javascript - 使用routeParams时,在一个页面上使用多个 Controller ?

javascript - 如何使用 Angularjs 在 Protractor 中选择可见元素

php - 如何修复 : The difference between the request time and the current time is too large

php - 日期格式时区问题

c# - asp.net Web Api 在网络配置中添加 MediaTypeFormatter

c# - 处理 Web API 返回的大型 JSON 数据

javascript - 未知提供商 : ngDialogProvider

javascript - 使用 d3js-wordcloud Angular 指令将 SVG 导出为 PNG

javascript - 在 MongoDB 中存储日期而不考虑时区

c# - WCF 与 ASP.NET Web API