gpt4 book ai didi

c# - "GMT Standard Time"是否意味着 BST?

转载 作者:行者123 更新时间:2023-11-30 15:26:39 26 4
gpt4 key购买 nike

我对“GMT 标准时间”感到困惑。

我的数据仅存储为 DATE,但实际上是 BST 下午 6 点。

我读进去加了18小时。然后我尝试转换为 UTC。我最初的理解是转换不会考虑夏令时(因为“GMT 标准时间”和 UTC 都没有夏令时)。我想我必须在源上测试日光时间,然后进行调整。

但是,ConvertTime 似乎知道源中的夏令时并进行适当的更改。

这对我来说似乎很奇怪 - 这是预期的行为吗?

    TimeZoneInfo gmtZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
TimeZoneInfo utcZone = TimeZoneInfo.FindSystemTimeZoneById("UTC");
public static CultureInfo ci = CultureInfo.InvariantCulture;


string SomeDT = "27/01/2000"; //First BST day
var sourceDT = DateTime.ParseExact(SomeDT, "dd/MM/yyyy", ci).AddHours(18);
var utcDT = TimeZoneInfo.ConvertTime(sourceDT, gmtZone, utcZone);

// At this point utcDT has already been changed so test below is redundant.
// That Suggest "GMT Standard Time" is actually "Daylight Time" i.e.BST

if (gmtZone.IsDaylightSavingTime(sourceDT))
{
utcDT = utcDT.AddHours(-1);
}
else
{
Console.WriteLine("Not BST");
}

最佳答案

问题是 Windows 中的时区 ID 令人困惑。尽管 ID 是“GMT 标准时间”,但该 ID 所指的时区实际上是“英国时间”……就像 IANA 中的“欧洲/伦敦”。所以是的,它将遵守夏令时。

如果您想要真正的 UTC,只需使用 TimeZoneInfo.Utc

(或者,使用 Noda Time 或类似的东西,更标准的 IANA time zones ...)

关于c# - "GMT Standard Time"是否意味着 BST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28990193/

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