typescript 如何解决www.example.com core和Angular中日期的时区偏移问题ASP.net?

icomxhvb  于 2023-01-03  发布在  TypeScript
关注(0)|答案(1)|浏览(117)

我使用ASP.net core 5和angular 15.0分别作为后端和前端。当从客户端的用户获得日期属性时(例如,Sun Jan 01 2023 21:27:11 GMT+0330(XXX Standard Time)),在将其作为对象发布到服务器之前,将其转换为ISO格式(即,将其转换为:2023-01- 01 T17:57:11.528Z)作为对象发送到服务器保存到数据库中,从服务器中检索到相同的日期时,会提前一天显示,OffsetZone为-210(-3:30 '),如何在保存到数据库之前,通过控制器动作将时间偏移量添加到接收日期属性中(即接收日期属性转换为2023-01- 01 T21:27:11,与本地日期值完全相同)?问候

cigdeys3

cigdeys31#

不久前我们统一了前端和后端的通讯。
要点和你已经在做的一样--发送/接收UTC ISO格式的日期。这样做可以给你一个清晰的、共享的基础,让你根据需要工作。
第二部分是在我们的模型中使用DateTimeOffset,而不是更基本的DateTime
这将解析ISO字符串,就像DateTime一样,但为x.LocalDateTime提供了访问器选项,使其根据服务器的本地时间(听起来像您想要的)提取DateTime值,以及根据需要使用x.UtcDateTime检索它的基本UTC时间。
例如

public class SomeInput {
    [Required]
    public string SomeProp { get; set; }
    [Required]
    public DateTimeOffset TheTime { get; set; }
}
public class SomeController : ... {
    [HttpPost]
    public Task<IActionResult> SomeAction(SomeInput input) {
        var utc = input.TheTime.UtcDateTime;
        var serverLocal = input.TimeTime.LocalDateTime;

        // ...
    }
}

通过这种方式,您可以确保将serverLocal值而不是UTC值传递给您的服务,以便它完全按照服务器的本地时间工作。

相关问题