You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NodaTime.Tzdb获取当前时区ID?

解决NodaTime.Tzdb获取当前时区ID不符的问题
  • 确认系统时区设置
    DateTimeZoneProviders.Tzdb.GetSystemDefault()是基于系统当前时区映射到Tzdb时区ID的。先检查你的系统实际时区是否为哥本哈根时区,若系统时区的偏移/规则与Paris时区一致,Tzdb可能返回别名而非你预期的ID。

  • 检查Tzdb版本
    不同版本的NodaTime.Tzdb包包含的时区数据可能存在差异,旧版本可能有映射偏差。确保你使用的是最新版本的NodaTime NuGet包,时区数据更新后这类问题可能被修复。

  • 验证时区映射与别名
    用以下代码查看系统时区对应的Tzdb信息及所有别名:

    var systemTimeZone = TimeZoneInfo.Local;
    var tzdbProvider = DateTimeZoneProviders.Tzdb;
    var mappedZone = tzdbProvider.GetZoneOrNull(systemTimeZone.Id);
    
    if (mappedZone != null)
    {
        Console.WriteLine($"当前映射的Tzdb ID: {mappedZone.Id}");
        Console.WriteLine("该时区的所有别名:");
        foreach (var alias in mappedZone.Aliases)
        {
            Console.WriteLine($"- {alias}");
        }
    }
    

    如果Europe/Copenhagen是该时区的别名,你可以直接通过这个别名获取对应时区:

    var copenhagenZone = DateTimeZoneProviders.Tzdb["Europe/Copenhagen"];
    
  • 强制指定目标时区
    若你明确需要Europe/Copenhagen时区,无需依赖系统默认,直接通过ID获取即可:

    var targetZone = DateTimeZoneProviders.Tzdb["Europe/Copenhagen"];
    

内容的提问来源于stack exchange,提问作者Qasim Raza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:10:34