【问题标题】:Passing datetimeoffset to web api将 datetimeoffset 传递给 web api
【发布时间】:2018-04-23 13:40:52
【问题描述】:

我遇到了日期时间偏移的问题。 我需要将 datetimeoffset 传递给我的 web api,但我无法将它发送到我的 web api。 这是我的模型属性:

 public DateTimeOffset? PlannedStart { get; set; }
 public DateTimeOffset? PlannedTarget { get; set; }

这是我从打字稿传递过来的:

 let body: string = JSON.stringify(this.sprintReview);
 let url: string = environment.baseUrl + "api/SprintReview/SaveSprintReview";
                this.baseService.post(url, body).subscribe((data: any) => {
                    this.alertContent = "Saved Successfully.";
 }
  • 我的 datetimepicker 给出了这个“2018 年 4 月 21 日星期六 06:00:00 GMT+0530 (印度标准时间){}"
  • 但是响应头“2018-04-21T00:30:00.000Z”
  • 但我的网络 api 收到此“{4/21/2018 12:30:00 AM +00:00}”

我知道它减去 5:30 小时,因为我的时区是 5:30+GMT

请帮助我将 datetimeoffset 传递给我的 web api。我需要在数据库中保存带有偏移量的日期时间。

谢谢

【问题讨论】:

    标签: angular asp.net-web-api2


    【解决方案1】:

    您的浏览器可能已经在 HTTP 标头中设置了您需要的信息,但目前我认为 W3C 尚未为此目的批准标准标头,因此依赖它可能会有问题。

    目前唯一可靠的方法是将本地机器的时区添加到要发送的 JSON 中。

    W3C 发表了一篇讨论处理时区问题的论文,地址为https://www.w3.org/TR/timezone/。在实施解决方案之前,您应该阅读它。

    【讨论】:

    • 另一种选择 - 如果您可以控制服务器端 - 始终将您的值存储在 zulu 中,并且仅在使用户可见时才转换为时区。我通常发现这是更灵活的解决方案,因为它允许根据时间比较和搜索记录,如果所有记录可能位于不同的时区,这将非常困难。我把它作为评论而不是答案,因为它实际上并没有回答你的问题 - 它只是表明可能有一种不同的方式来检查你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2018-05-12
    相关资源
    最近更新 更多