gpt4 book ai didi

c# - 如何将特定时区的午夜正确转换为 Utc 时间?

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

这似乎是一个简单的问题,但看起来比看起来更难:

如何将指定时区的Midnight转换为Utc时间(不考虑本地计算机的时区)?

一个例子:今天午夜 CET 在 UTC 中是晚上 11 点(前一天)。

我尝试了以下方法:

DateTime midnight = TimeZoneInfo.ConvertTime(DateTime.UtcNow, specifiedTimeZoneInfo).Date;
DateTime utcTime = midnight.ToUniversalTime();

问题是只有当运行代码的本地计算机的时区与 TimeZoneInfo.ConvertTime 中使用的时区相同时,此代码才有效。

无论本地计算机的时区如何,如何做到这一点?

最佳答案

考虑以下代码:

var cestZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");

var cestNow = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cestZone);
var cestMidnight = cestNow.Date;
var cestMidnightInUTC = TimeZoneInfo.ConvertTimeToUtc(cestMidnight, cestZone);

DateTime.UtcNow12/29/2018 - 11:30:00 PM 时将导致:

If you live in CEST and look at clock
cestNow: 12/30/2018 - 12:30:00 AM

If you live in CEST and had a look at clock at midnight (start of today, 30 minutes ago)
cestMidnight: 12/30/2018 - 12:00:00 AM

At your midnight, UTC was
cestMidnightInUTC: 12/29/2018 - 11:00:00 PM

注意:12:00:00 AM 是一天的开始。因此,例如,如果现在的 utc 是 12/29/2018 - 11:30:00 PM,则午夜是 23:30 小时前的 12/29/2018 - 凌晨 12:00:00 世界标准时间

关于c# - 如何将特定时区的午夜正确转换为 Utc 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53973700/

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