使用moment.js将UTC时间戳发送到ASP.NET Core控制器

时间:2017-08-10 00:42:46

标签: asp.net-core json.net momentjs

我有一个数据库,其中包含我想要在网络前端显示的设备的测量值。首先,我将设备列表与每个设备的IANA时区说明符一起发送到前端。

我希望所有时间戳都以UTC格式进行交换。用户在设备本地时间中选择前端的时间范围。我使用moment.js将这些时间戳转换为UTC,并使用设备的已知时区,如下所示:

var startTimestamp = new Date(2017, 7, 1); //some local timestamp (zero-based month!)

var m = moment.tz(startTimestamp, "Europe/Berlin");

var utc = moment.utc(m).format();

utc现在是" 2017-07-31T22:00:00Z"鉴于柏林在夏令时的2小时抵消,这似乎是正确的。

我将此utc时间戳发送到我的ASP.NET Core后端。控制器如下所示:

[HttpGet]
public IEnumerable<TimestampedValue> GetValues(int id, DateTime startTimestamp)
{
...
}

问题是startTimestamp是2017-08-01 00:00:00,当调用控制器并且其Kind属性设置为Local时。我原本期望它是相同的UTC时间戳。

知道我做错了什么吗?我认为moment.js正确地完成了它的工作,所以这一定是服务器端的一个问题。如果我没记错的话,反序列化是由JSON.net完成的,但我不明白为什么它不遵守时间字符串末尾的Z.

0 个答案:

没有答案