gpt4 book ai didi

c# - .NET:考虑夏令时

转载 作者:行者123 更新时间:2023-11-30 12:16:14 25 4
gpt4 key购买 nike

我有一个方法可以根据用户输入创建 UTC DateTime,使用他们地理位置的 GMT 偏移量:

public static DateTime LocalToUtc
(int year, int month, int day, int hour, decimal gmtOffset) {

// argument validation here

var dateTime = new DateTime(year, month, day).AddHours(hour);
var dateTimeOffset =
new DateTimeOffset(dateTime, TimeSpan.FromHours(gmtOffset));

return dateTimeOffset.UtcDateTime;

}

问题是如果用户时区是夏令时,这个功能会关闭一个小时。

因此,虽然我个人的 GMT 偏移量是 -8,但由于夏令时,当前时区偏移量是 -7。

如何更改上述函数以考虑夏令时?难道我不需要以某种方式根据 GMT 偏移量创建一些时区对象并获取其时区偏移量吗?

最佳答案

在不知道实际时区的情况下无法做到这一点:多个时区具有相同的基本 UTC 偏移量,但夏令时规则不同。例如,W。欧洲标准时间W. Central Africa Standard Time 都具有 +01:00 的偏移量,但前者支持 DST 而后者不支持。所以偏移量不足以决定夏令时是否适用...

您的方法应该采用 TimeZoneInfo 参数而不是 gmtOffset。这样,您只需使用 TimeZoneInfo.ConvertTime 方法来转换日期,它会自动将 DST 考虑在内。

关于c# - .NET:考虑夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811267/

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