gpt4 book ai didi

c# - 将表示为字符串的英国时间(BST 和 GMT)转​​换为 UTC(在 C# 中)

转载 作者:可可西里 更新时间:2023-11-01 09:12:16 25 4
gpt4 key购买 nike

我必须使用遗留数据库中的一些日期和时间。它们被表示为字符串。日期为日/月/年。时间为 HH:mm。

我想在从数据库中提取它们后立即将它们转换为 UTC。我在美国系统上工作,所以需要一个共同的时间。

我面临的问题是如何将它们转换为 UTC DateTime 值。我可以做解析等。我真正的问题是时区。

我正在尝试使用以下方法:

DateTime ukTime = // Parse the strings in a DateTime value.
TimeZoneInfo timeZoneInformation = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTimeOffset utcTime = new DateTimeOffset(ukTime, timeZoneInformation.BaseUtcOffset);

但是,如果日期是在英国夏令时期间,这将给出不正确的值。

我可以在这些日期使用“GMT 夏令时”,但这需要我知道切换时间。我相信一定有更省力的方法。

因为我使用的不是英国时间设置的机器,所以我不能依赖本地时间。

基本上,我需要这样的东西:

// Works for both GMT (UTC+0) and BST (UTC+1) regardless of the regional settings of the system it runs on.
DateTime ParseUkTimeAsUtcTime(string date, string time)
{
...
}

我搜索了这些帖子,但找不到任何直接解决这个问题的内容。当然这也是 EST、EDT 等的问题?

最佳答案

尝试使用 GetUtcOffset() TimeZoneInfo 实例上的方法,它考虑了“调整规则”。

使用它应该与您的原始示例基本相同,但您将使用该方法而不是 BaseUtcOffset 属性。

DateTime ukTime = // Parse the strings in a DateTime value.
TimeZoneInfo timeZoneInformation = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTimeOffset utcTime = new DateTimeOffset(ukTime, timeZoneInformation.GetUtcOffset(ukTime));

关于c# - 将表示为字符串的英国时间(BST 和 GMT)转​​换为 UTC(在 C# 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1555983/

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