【问题标题】:Pass JavaScript date to C# Web API string property将 JavaScript 日期传递给 C# Web API 字符串属性
【发布时间】:2023-04-04 23:32:01
【问题描述】:

当我将 JavaScript 日期传递给 C# Web API 控制器字符串属性时,它会转换为 ISO 8601 UTC 格式,即“2019-08-20T08:30:50Z”。我需要它采用我的本地日期格式,即“2019-08-20T10:30:50+02:00”。我不想在它通过之前将 UI 端的日期转换为字符串,也不想在之后将其转换为后端的字符串。我希望它在通过时自动正确转换。是否有某个地方可以确定这一点?属性还是什么?有什么帮助吗?谢谢。

【问题讨论】:

  • 2019-08-20T08:30:50Z2019-08-20T10:30:50+02:00 代表相同的时间点并且实际上是相同的
  • 是的,但是 utc 格式在我进行报告时会出现问题。
  • 那是报告的问题。永远不要将其存储为字符串,然后您可以根据需要对其进行格式化。日期格式是表示逻辑,应始终尽可能靠近客户。

标签: javascript c# asp.net-web-api


【解决方案1】:

我想通了。

在您的 WebApiConfig.cs 中执行以下操作:

var config = new HttpConfiguration();
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm";

【讨论】:

  • 这里假设客户端时区和服务器时区相同。
  • 谢谢 phuzi。如果不是这样,我将如何修改我的代码?
  • 将日期保存为日期,切勿将日期存储为格式化字符串。将日期存储为 UTC 日期/时间可以避免在不同时区之间转换的复杂性(很多时候)。
猜你喜欢
  • 2021-07-04
  • 2017-03-26
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2018-11-25
相关资源
最近更新 更多