我正在尝试将两个日期时间字段(开始日期和结束日期)传递给我的webapi服务器,其中我的javascript中的ISO8601格式日期字符串似乎正确传递,但服务器正在将这两个日期错误地解释为一天
/service/api/application/2016-09-01T14:00:00.000Z/2016-09-30T13:59:59.999Z /
结果:
开始日期='2016-09-02 00:00:00'
结束日期='2016-10-01 00:00:00'
[Route("api/Application/{dateLodgedStart}/{dateLodgedEnd}")]
[ResponseType(typeof(PagedResultObject<ApplicationObject>))]
public HttpResponseMessage Get(DateTime? dateLodgedStart, DateTime? dateLodgedEnd) {
//Do stuff
}
有什么想法吗?
答案 0 :(得分:3)
因为你在GMT + 10并且你正在解析&#34; Zulu Time&#34; - 即GMT + 0然后解析器会自动为您添加10个小时。
如果我们使用C#进行解析,那么我们可以使用DateTimeOffset.Parse
:
var startDate =
DateTimeOffset
.Parse("2016-09-01T14:00:00.000Z")
.ToOffset(TimeSpan.FromHours(10.0));
var endDate =
DateTimeOffset
.Parse("2016-09-30T13:59:59.999Z")
.ToOffset(TimeSpan.FromHours(10.0));
Console.WriteLine(startDate);
Console.WriteLine(endDate);
这会产生:
2016/09/02 00:00:00 +10:00 2016/09/30 23:59:59 +10:00
但是你的结束日期似乎仍有一个奇怪的舍入错误。