gpt4 book ai didi

c# - 中欧是否有通用的 TimeZoneInfo?

转载 作者:可可西里 更新时间:2023-11-01 09:08:17 27 4
gpt4 key购买 nike

是否有针对中欧的通用 TimeZoneInfo 将 CET 和 CEST 合二为一?

我有一个正在执行以下操作的应用:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"); 
DateTimeOffset dto = new DateTimeOffset(someDate, tzi.BaseUtcOffset);
var utcDate = dto.ToUniversalTime().DateTime;

问题是这会返回错误的 utcDate,因为 BaseUtcOffset 是 +1 而不是 +2。似乎 CET 也有 DST,并且取决于一年中的时间,它是 +1 或 +2。

最佳答案

首先,我想赞扬 mgnoonan 使用 Noda Time 的回答 :) 但是如果你觉得不那么冒险......

您已经使用了正确的时区 - 但您不应该使用 BaseUtcOffset这是记录与夏令时无关的:

Gets the time difference between the current time zone's standard time and Coordinated Universal Time (UTC).

当您不为其提供 DateTime 来获取偏移量时,它不可能考虑 DST :)

假设 someDate 是一个 DateTime,您可以使用:

DateTimeOffset dto = new DateTimeOffset(someDate, tzi.GetUtcOffset(someDate));

或者只是 ConvertTimeToUtc :

var utcDate = TimeZoneInfo.ConvertTimeToUtc(someDate, tzi);

请注意,如果您的本地时间由于 DST 转换而出现两次,或者根本没有出现,您应该想出您想要做什么。

关于c# - 中欧是否有通用的 TimeZoneInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10019267/

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