我们通过REST api使用TFS 2015来查找在两个日期时间之间签入了哪些更改集:
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中的变更集显示了正确的签入时间
rest API返回该项的时间为一个小时后(签入是在上周夏令时期间)。
"createdDate":"2016-10-25T13:49:44.573Z",
它返回了更改集,这很好,但是返回的值没有考虑到夏令时。
API以"祖鲁时间"或协调世界时(UTC)的形式返回日期,根据ISO 8601日期时间规范
你可以告诉是字符串后面的"Z":
"createdDate":"2016-10-25T13:49:44.573Z",
^
对于API来说,这是一件很常见的事情,记住在Visual Studio Team Services中也有完全相同的API,它是跨多个时区托管的,并且可以由多个时区的客户端访问。
在这种情况下,将时间转换为本地时间是客户端的工作。
一个微不足道的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