首页 > 解决方案 > 在 MVC 的服务器端从客户端获取不同的 jsonFormat 日期

问题描述

我在客户端使用 Knockout js,在服务器端使用 MVC C#。我以2019-04-25T03:27:00.000Z (UTC +5:30) 的形式传递日期。在服务器端,我正在使用 DateTime(使用 DateTimeOffset,但由于同样的问题,我已将其更改为 DateTime)并获得不同的日期{4/25/2019 8:57:00 AM}

问题: 1. 如果我正在更改客户端系统的时区,那么在服务器端它总是带有时间加上 +5.30 的日期。

  1. 我必须忽略客户端或服务器端的时间戳,以便我可以获得客户端发送到服务器的确切日期。

标签: c#datetimemodel-view-controllerknockout.jstimezone

解决方案


我有一个类似的问题,所以这可能是发生了什么:

DateTime 有一个“Kind”属性,指示日期/时间是本地、UTC 还是“未知”。当控制器方法具有 DateTime 参数时,它会将其设置为适当的值,其中“Kind”值为“Local”。换句话说,它与客户端传输的时间相同,但被时区偏移。

要返回服务器上的 UTC,请使用 DateTime ToUniveralTime() 方法。请注意,这仅在 DateTime Kind 值为 Local 或 Utc 时才能正常工作。

例子:

public void GetDateRangeReadings(DateTime startDate)
{
    startDate = startDate.ToUniversalTime();

推荐阅读