在英国的时钟改变了25/10/2015.NET DateTime.ToLocalTime是否跨DST更改持续存在?
如果我在24/10/2015跑到下面的代码,并再次在26/10/2015,将相同的输出产生?
从我的日期时间的东西如何在C#我假设是的,但我想仔细检查,因为它是我的应用程序的关键知识。
// January date outside of DST
var januaryDate = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc);
Console.WriteLine(januaryDate.ToLocalTime().ToString());
// April date inside DST
var aprilDate = new DateTime(2015, 4, 1, 0, 0, 0, DateTimeKind.Utc);
Console.WriteLine(aprilDate.ToLocalTime().ToString());
当地时间意味着无论你*当前时区*为。即使是同一台机器上的不同用户也可能使用不同的时区。如果您关心偏移量,请使用DateTimeOffset,而不是DateTime。如果这是关键的(因为它是例如在航空旅行),检查NodaTime以及 - 它包含了最新IANA时区数据库,这样你就不必猜测,BST手段(巴西或英国),或什么是正确的达拉斯 –
偏移@ PanagiotisKanavos谢谢,但不幸的是卡住了DateTime类型。假设这个问题,它是同一台机器上的同一个用户。 –
那你就麻烦了。至少,指定日期类型(即本地或UTC),因为现在它是未指定的并且被视为UTC。 'ToLocalTime()'在我的机器上应用了一个2小时的偏移量,它是'+2:00'。猜猜这也回答你的问题,但也显示你为什么有麻烦。除非你做** **一定的偏移量还是那种被存储在您的日期(即数据库,文件等)和妥善处理之前设置,你可以有意想不到的效果 –