gpt4 book ai didi

c# - ConvertTimeFromUtc() 和 ToUniversalTime() 是否处理 DST?

转载 作者:IT王子 更新时间:2023-10-29 04:49:28 27 4
gpt4 key购买 nike

如果夏令时有效,并且日期对象已保存到数据库(UTC 格式)中,您检索该对象以在 View 中显示它(例如 asp.net-mvc ).

您可以使用以下方法来做到这一点:

public static DateTime ConvertToLocalTimeFromUtcTime(DateTime utcDate, string timeZoneId)
{
TimeZoneInfo localZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, localZone);

if (localZone.IsDaylightSavingTime(localTime))
localTime = localTime.AddHours(1); // is this needed !?

return localTime;
}

问题是,TimeZoneInfo.ConvertTimeFromUtc() 是否处理 DST,或者您是否必须自己检查并向日期对象添加或减去 X 小时?

通过使用 ToUniversalTime() 将日期对象转换为 UTC 格式将日期对象保存到数据库时的相同问题。

最佳答案

是的。 ConvertTimeFromUtc 将自动处理夏令时调整,只要您定位的时区使用夏令时。

来自 the MSDN documentation :

When performing the conversion, the ConvertTimeFromUtc method applies any adjustment rules in effect in the destinationTimeZone time zone.

您不应该尝试在转化中增加一个小时。这会给你一个错误的翻译。

关于 DateTime.ToUniversalTime,它确实考虑了夏令时,但要小心使用此方法。它假定输入值在计算机的本地 时区内。如果您只需要用 DateTimeKind.Utc 标记它,那么请改用 DateTime.SpecifyKind

关于c# - ConvertTimeFromUtc() 和 ToUniversalTime() 是否处理 DST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158015/

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