我在客户端使用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的日期。
答案 0 :(得分:0)
我遇到了类似的问题,所以这可能是正在发生的事情:
DateTime具有“Kind”属性,指示日期/时间是本地,UTC还是“未知”。当控制器方法具有DateTime参数时,它将其设置为具有“Kind”值“Local”的适当值。换句话说,它与客户端传输的时间相同,但会被时区抵消。
要在服务器上返回UTC,请使用DateTime ToUniveralTime()方法。请注意,只有在DateTime Kind值为Local或Utc时,这才能正常工作。
示例:
public void GetDateRangeReadings(DateTime startDate)
{
startDate = startDate.ToUniversalTime();