c# - 夏令时规则和转换

标签 c# .net silverlight datetime

由于 silverlight 没有完整的 TimeZoneInfo,我需要自己实现一些功能。例如,以下信息来自 .NET TimeZoneInfo

ID: Central Standard Time
   Display Name:   (UTC-06:00) Central Time (US & Canada)
   Standard Name:                   Central Standard Time
   Daylight Name:                   Central Daylight Time   ***Has Daylight Saving Time***
   Offset from UTC:                      -6 hours, 0 minutes
   Number of adjustment rules:                          2
   Adjustment Rules:
      From 1/1/0001 12:00:00 AM to 12/31/2006 12:00:00 AM
      Delta: 01:00:00
      Begins at 2:00 AM on Sunday of week 1 of April
      Ends at 2:00 AM on Sunday of week 5 of October
      From 1/1/2007 12:00:00 AM to 12/31/9999 12:00:00 AM
      Delta: 01:00:00
      Begins at 2:00 AM on Sunday of week 2 of March
      Ends at 2:00 AM on Sunday of week 1 of November

我的问题是,当我需要从 UTC 转换为本地时间并返回时,如何实现此类规则?

我是否应该采用 UTC,减去 6 小时,然后检查是否在 3 月第 2 周星期日凌晨 2 点之后,然后加上 1 小时?

或者我应该采用 UTC,检查它是否在凌晨 2 点之后,然后减去 5?

最佳答案

夏令时生效的时间是该时区的本地时间,而不是 UTC。因此,您应该采用 UTC 时间,减去 6 小时,进行检查,然后在适用的情况下重新加上该小时。

关于c# - 夏令时规则和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219792/

相关文章:

c# - 限制任务并行库中的线程数

c# - 从 Sql Server 迁移到 MySQL 后,EntityFramework 执行查询时出现问题

c# - 如何使用 Asp.Net Core 实现基于权限的访问控制

c# - 在检查 block 中调用的方法中没有溢出异常

c# - WPF 布局绑定(bind)

c# - 无法从程序集 'GraphQL.Http.IDocumentWriter' 加载类型 'GraphQL, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null'

c# - WPF 和 Silverlight 命令实现对于 M-V-VM (M-V-P) 模式毫无用处吗?

c# - 变量名称中的C#@符号

c# - Silverlight Deepzoom API 输出与 Deepzoom Composer 输出

c# - 将方法转换为调用 Write 四十次的异步方法的正确方法?