本地 TFS 2015 更新 2 - 夏令时问题

TFS 2015 Update 2 on premise - Daylight saving issue

我们通过 REST 使用 TFS 2015 api 来找出在两个日期时间之间签入了哪些变更集:

http://internal01:8080/tfs/AppCollection/hr/_apis/tfvc/changesets?fromDate=2016-10-25T14:40:01.570&itemPath=$/HR/P1/Tempest/DevQA&api-version=1.0&toDate=2016-10-25T14:50:01.570

问题是英国上周结束了夏令时。

即使 visual studio 中的变更集显示了正确的签入时间

其余 API 返回此项目的时间晚了一个小时(签到是在夏令时的最后一周。

"createdDate":"2016-10-25T13:49:44.573Z",

它正在返回更改集,这很好,但返回的值不考虑夏令时。

API 返回 "Zulu Time" 中的日期,或 Coordinated Universal Time (UTC), as per ISO 8601 日期时间规范

你可以看出字符串的尾部 "Z":

"createdDate":"2016-10-25T13:49:44.573Z",
                                      ^

这对于 API 来说是很常见的事情,请记住完全相同的 API 在 Visual Studio Team Services 中,它托管在多个时区并被多个时区的客户访问。

在这些情况下,将时间转换为本地时间是客户端的工作。

一个简单的 C#/.NET 实现是:

var createdDateUtc = "2016-10-25T13:49:44.573Z";
var createdDateLocal = DateTimeOffset.Parse(createdDateUtc).ToLocalTime();
Console.WriteLine(createdDateLocal);

//Prints: 25/10/2016 14:49:44 +01:00