gpt4 book ai didi

c# - 获取距现在 N 小时后本地时间的时间,考虑夏令时的变化

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:17 26 4
gpt4 key购买 nike

时区和夏令时的变化尤其让我感到困惑。在英国,我们有 GMT/BST:

In the UK the clocks go forward 1 hour at 1am on the last Sunday in March, and back 1 hour at 2am on the last Sunday in October. The period when the clocks are 1 hour ahead is called British Summer Time (BST).

给定本地时间 00:00,我希望能够计算到本地时间 03:00 之前还有多长时间。通常这只是 3 小时,但在 3 月 26 日(3 月的最后一个星期日)00:00 - 03:00 实际上是两个 小时。类似地,当时钟在 10 月从 00:00 回到 03:00 时,4 小时。

.Net DateTime 类及其方法对我来说是微不足道的,还是我需要小心?

特别是在我的例子中,我使用的是字符串,所以我在执行以下操作:

TimeSpan DifferenceBetweenLocalTimes(string startDateTime,string endDateTime) 

我可以看到像 TimeZoneInfo.IsDaylightSavingTime 这样的东西,但是如何使用它来按照我的意愿去做并不明显。我的应用程序将每个日历日的本地午夜视为严格的边界,即并非每一天都是 24 小时,一年一次我得到 23 小时和 25 小时的一天。

最佳答案

您可以使用 TimeZoneInfo 类来获取从本地日期时间到 UTC 的偏移量(包括夏令时技巧)。例如

var timeZone =TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
var date1 = DateTime.Parse("2017-03-26 00:00:00");
var date2 = DateTime.Parse("2017-03-26 03:00:00");
var dto1 = new DateTimeOffset(date1, timeZone.GetUtcOffset(date1));
var dto2 = new DateTimeOffset(date2, timeZone.GetUtcOffset(date2));

var diff1 = (dto2 - dto1).TotalHours;

Console.WriteLine(diff1); // this is 2 hours

GetUtcOffset 方法返回该时区的时间与 UTC 之间的时间差

关于c# - 获取距现在 N 小时后本地时间的时间,考虑夏令时的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com