【问题标题】:In C#, how does one convert from a windows system time to EDT, provided the windows system doesn't observe DST?在 C# 中,如果 Windows 系统不遵守 DST,如何将 Windows 系统时间转换为 EDT?
【发布时间】:2020-03-09 15:11:11
【问题描述】:

我们有一个设置为不调整夏令时时间的 Windows 系统。当然,我们需要以挂钟时间向用户显示正确的时间,在我们的例子中是 EDT。

在我们较旧(非常、非常旧)的系统中,我们必须定义时钟前进或后退一小时的日期,并根据我们是否处于 DST 的天气转换时间。

这在带有 c# 的 Windows 系统中如何工作?

Windows 是否知道它何时处于 DST,即使它设置为不进行调整?

我怀疑只有当您的系统设置为针对 DST 进行调整时,转换才有效。我错了吗?

【问题讨论】:

    标签: c# windows datetime timezone


    【解决方案1】:

    这将返回美国东部时区的当前时间,包括 EST 和 EDT:

    TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
    

    运行它的机器是否启用了夏令时,或者它是否完全处于不同的时区都没有关系。命名时区将使用该时区的完整规则。

    关于设置为禁用自动夏令时调整的系统,.NET 将仅在与本地时区转换时考虑到这一点。换句话说,当使用TimeZoneInfo.Local,或DateTime.ToLocalTime,或DateTime.ToUniversalTime(来自当地时间)等时。

    另外,一般不建议Windows系统用户禁用自动夏令时功能。禁用它的选项主要是旧配置。相反,用户应该简单地为他们所在的位置选择正确的时区。

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 2016-03-18
      • 2021-06-09
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2017-12-07
      相关资源
      最近更新 更多