Dis*_*ted 1 .net c# time timezone
考虑夏令时,如何添加小时数?
我们在10月27日有时间班,所以我希望得到19(或21)小时的结果.
我怎样才能做到这一点 ?
var test = new DateTimeOffset(new DateTime(2018, 10, 26, 20, 0, 0));
var test2 = test.AddHours(48);
Run Code Online (Sandbox Code Playgroud)
最简单的方法是转换为UTC,在那里添加48小时,然后转换回来.这样,您可以在每个点应用适当的时区偏移.例如:
using System;
class Test
{
static void Main()
{
var test = new DateTimeOffset(new DateTime(2018, 10, 26, 20, 0, 0));
var test2 = test.AddHours(48);
var test3 = test.ToUniversalTime().AddHours(48).ToLocalTime();
Console.WriteLine(test2);
Console.WriteLine(test3);
}
}
Run Code Online (Sandbox Code Playgroud)
伦敦时区的结果:
28/10/2018 20:00:00 +01:00
28/10/2018 19:00:00 +00:00
Run Code Online (Sandbox Code Playgroud)
请注意,在某些情况下,原始的本地时间可能会被跳过或模糊不清 - 您应该考虑做什么.我个人(出于显而易见的原因)推荐我的Noda Time项目,其中有更多类型来表示您使用的不同类型的价值.如何处理跳过/模糊时间的决定更明显,因为你基本上必须制作它们.