我做以下事情:
var now = DateTime.Now;
var utc = DateTime.UtcNow;
var timeSpan = now - utc;
Console.WriteLine("Now is: " + now.ToString("yyyy-MM-dd HH:mm:ss:ms") + " utc is: " + utc.ToString("yyyy-MM-dd HH:mm:ss:ms") + " timeSpan: " +
                    timeSpan.TotalMinutes);
Console.ReadKey();
它给出了以下结果: 
 如果我采用timespan.hours(这是我实际使用的那个)它会显示1?应该是2我在那里做错了什么?
如果我采用timespan.hours(这是我实际使用的那个)它会显示1?应该是2我在那里做错了什么?
在你获得时间之间有一段时间(系统甚至可以在这两个调用之间切换进程):
 var now = DateTime.Now;
 // some time passes here
 var utc = DateTime.UtcNow;
这就是为什么两个值之间的时间少于2小时.你应该只花一次时间,然后将其转换为当地时间:
 var utc = DateTime.UtcNow;
 var now = utc.ToLocalTime();
 // timeSpan: 120
或者使用TimeZoneInfo.ToUniversalTime将本地时间转换为UTC时间:
 var now = DateTime.Now;
 var utc = TimeZone.CurrentTimeZone.ToUniversalTime(now);
| 归档时间: | 
 | 
| 查看次数: | 126 次 | 
| 最近记录: |