c# - 在 C# 中,如果 Windows 系统不遵守 DST,如何将 Windows 系统时间转换为 EDT?
问题描述
我们有一个设置为不调整夏令时时间的 Windows 系统。当然,我们需要以挂钟时间向用户显示正确的时间,在我们的例子中是 EDT。
在我们旧的(很多很多的)系统中,我们必须定义时钟前进或后退一个小时的日期,并根据我们是否处于 DST 的天气转换时间。
这将如何在带有 c# 的 Windows 系统中工作?
即使设置为不进行调整,Windows 是否知道它何时处于 DST 中?
我怀疑只有当您的系统设置为针对 DST 进行调整时,转换才有效。我错了吗?
解决方案
这将返回美国东部时区的当前时间,包括 EST 和 EDT:
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
运行它的机器是否启用了 DST,或者它是否完全处于不同的时区都没有关系。命名时区将使用该时区的完整规则。
对于设置为禁用自动夏令时调整的系统,.NET 将仅在转换到本地时区或从本地时区转换时考虑到这一点。换句话说,当使用TimeZoneInfo.Local
, or DateTime.ToLocalTime
, or DateTime.ToUniversalTime
(来自当地时间)等时。
此外,一般不建议 Windows 系统用户禁用自动 DST 功能。禁用它的选项主要是旧配置。相反,用户应该简单地为他们所在的位置选择正确的时区。
推荐阅读
- sql - Postgres 索引散列的大表
- varnish - 为什么在使用 libvmod-dynamic 时 varnishstat 中的计数器 MAIN.backend_unhealthy 不起作用?
- javascript - 这个函数的运行时复杂度是多少?
- javascript - react-ga 未将 Google Analytics Tracker 添加到页面
- python - 使用 pip 安装 web3 时出错。找不到满足 ipfshttpclient==0.7.0 要求的版本
- c# - 使用参数调用 resx 文本
- azure - 使用 Microsoft.Azure.Functions.Worker.Http 中的 HttpRequestData,如何检索远程 IP 地址?
- filtering - IIR 滤波的 SIMD 优化
- ssl - ActiveMQ Artemis ha=true 和 SSL 连接器
- javascript - 谷歌地图信息框 Js 和 PHP