.NET:考虑夏令时

2024-01-03

我有一个创建 UTC 的方法DateTime根据用户输入,使用其地理位置的 GMT 偏移量:

public static DateTime LocalToUtc
    (int year, int month, int day, int hour, decimal gmtOffset) {

    // argument validation here

    var dateTime = new DateTime(year, month, day).AddHours(hour);
    var dateTimeOffset = 
        new DateTimeOffset(dateTime, TimeSpan.FromHours(gmtOffset));

    return dateTimeOffset.UtcDateTime;

} 

问题是,如果用户所在时区是夏令时,则此功能会关闭一个小时。

因此,虽然我个人的 GMT 偏移量为 -8,但由于夏令时,当前时区偏移量为 -7。

如何更改上述函数以考虑夏令时?难道我不需要以某种方式根据 GMT 偏移量创建一些时区对象并获取其时区偏移量吗?


如果不知道实际时区,就无法做到这一点:多个时区具有相同的基本 UTC 偏移量,但夏令时规则不同。例如,西欧标准时间 and 中非西部标准时间两者的偏移量均为+01:00,但前者支持 DST,而后者不支持。所以偏移量不足以决定是否适用 DST...

你的方法应该采取TimeZoneInfo参数而不是gmtOffset。这样你就可以使用TimeZoneInfo.ConvertTime转换日期的方法,它会自动考虑夏令时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET:考虑夏令时 的相关文章

  • ASP.net C#,采用不同参数类型的同名方法[重复]

    这个问题在这里已经有答案了 可能的重复 可以在 ASP Net MVC 中重载控制器方法吗 https stackoverflow com questions 436866 can you overload controller metho
  • 如何以编程方式对 WebBrowser 控件安全警报回答“是”

    我正在使用 WebBrowser 控件以编程方式访问单个网站 但每当我登录时 我都会收到此证书安全警报 由于我信任该网站 并且我还需要以编程方式自动登录 因此此对话框会妨碍我 我搜索了解决方案并发现一个和我类似的问题 https stack
  • C 位域内存使用情况

    我需要处理以下形式的一些数据 typedef struct unsigned n1 12 unsigned n2 12 unsigned n3 12 unsigned n4 1 unsigned n5 35 data 我确保它们总共最多有
  • EF4如何在多对多关系中公开联接表

    假设我有以下表格 Essence EssenceSet 和 Essence2EssenceSet 其中 Essence2EssenceSet 仅保存前 2 个表的 ID 以形成 M M 关系 在 EF 中 由于 Essence2Essenc
  • ISO C++ 草案 (n3290) 中的一点:3.4.3.2/1 命名空间成员

    ISO C 草案 n3290 中的一点 3 4 3 2 1 命名空间成员 如果限定 ID 的嵌套名称说明符指定命名空间 在嵌套名称说明符之后指定的名称在中查找 命名空间的范围 如果限定 ID 以 开头 则 在全局命名空间中查找 之后的名称
  • 静态方法中的统一

    一个可能很简单的问题 但很奇怪为什么我不知道该怎么做 Unity PRISM 和静态方法 在这种特殊情况下 需要使用扩展方法 但一般来说 如何在静态方法中访问 统一提供的实例 想想例如我想访问一个日志服务来记录我在静态方法中所做的一些事情
  • 无法将 MVC 4 部署到服务器

    我的 Web 应用程序只是一个用 VS 2010 MVC 4 制作的简单 Web 应用程序 没有任何外部代码 它只是 VS 2010 的默认应用程序 我有 Plesk 的豪华 Windows 托管 我从未更改过帐户中的任何功能 我将所有文件
  • 使用 Unity 如何将命名依赖项注入构造函数?

    我有IRespository在以下代码中注册了两次 带有名称 Setup the Client Repository IOC Container RegisterType
  • 如何将 C# 8 与 Visual Studio 2017 结合使用?

    我想在 Visual Studio 2017 中使用 C 8 0 尤其是范围和不可空引用类型 这可能吗 展望未来 微软希望将 C 语言版本与框架版本比过去更紧密地联系起来 他们实际上只希望您将 C 8 与 NET Core 3 x 和 NE
  • 尝试对无法访问的主机进行套接字操作

    一位客户在连接到我们的服务器服务的 WCF 客户端上报告了此错误 消息 尝试对无法访问的主机进行套接字操作 类型 System Net Sockets SocketException 从这个链接http msdn microsoft com
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s

随机推荐

  • 检查 URL 状态的脚本

    我见过一些与此类似的问题 但没有找到适合我的情况的问题 我有一个存储在文本文件中的 URL 列表 我需要运行该列表以查看它们是否返回 404 错误 我正在使用 powershell 并一直在使用这里的示例 http gallery tech
  • 插入后在实体框架中获取记录 ID

    我正在使用实体框架开发 ASP net 应用程序 我在用着DetailsView将数据插入数据库 有一张表作为Client它的主键是client id client id由数据库自动生成 我需要自动生成client id插入一条记录后Cli
  • 对多行使用 SELECT INTO

    这是重新 我想通过利用 SELECT INTO 使用查询结果创建一个表 语法 SELECT INTO Persons Backup FROM Persons 与我想要实现的目标非常接近 不同之处在于我希望 FROM 使用查询作为源 我的情况
  • 如何将 mpdf 中的图像居中?

    我想将图像居中mpdf 版本 6 gt 这是我发送到 mpdf 的 缩短的 html 输出 这displayed类没有帮助 img style max height 600px class displayed src images size
  • Visual Studio 2012 单元测试框架的优缺点

    我想开始使用 C 纯 C 而不是 NET 进行单元测试 因为我以前从未这样做过 一直用assert and cout 到目前为止 我发现的唯一具有详细答案的好问题是https stackoverflow com questions 1369
  • 在 Visual Studio Online 上构建 Wix 会导致“错误注册的脚本引擎”

    我最近决定尝试在线视觉工作室来自动化我的构建 构建结果应该是一些二进制文件和 wix 创建的安装程序 在本地 这有效 但是在 Visual Studio Online 上 这会导致错误 light exe 执行 ICE 操作 ICE01 时
  • 在 PostgreSQL 中对组内的行进行排序

    我有以下查询 SELECT routeid SRID 4326 LINESTRING string agg lon lat AS the geom FROM route table WHERE observation time BETWEE
  • 使用 Unity 时收到警告“无法创建代理,因为没有有效的导航网格”

    我正在使用程序网格几何体 并在导航窗口中将导航静态设置为 打开 我还在检查器中将网格生成器设置为 静态 我还烘焙了敌人的代理 但它仍然抛出警告 无法创建代理 因为没有有效的 NavAgent 这很可能导致错误 SetDestination
  • 如何以编程方式获取 GCP Bearer 令牌

    gcloud auth print access token给我一个不记名令牌 我可以稍后使用 令牌看起来像 Authorization Bearer ya29 AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3 Lh s
  • 鼠标向上/向下之间的秒表

    我试图通过在 while 循环中使用简单的秒表来测试鼠标按下和鼠标按下事件之间的时间 鼠标按下事件工作正常 但是当我释放鼠标以进行鼠标弹起时 秒数继续增加并且不会停止 from pygame import import time scree
  • 什么情况下BlockingQueue.take会抛出中断异常?

    假设我有一个线程消耗另一个线程生成的项目 它的run方法如下 inQueue是一个BlockingQueue boolean shutdown false while shutdown try WorkItem w inQueue take
  • CryptoLocker - 使用 Python 脚本恢复云端硬盘文件版本

    长话短说 我感染了 CryptoLocker 病毒 我的 正常 本地文件不是问题 因为我备份了这些文件 但我使用的是 Google Drive Sync 客户端 并且我的所有云端硬盘文件都已加密 我没有备份它们 因为我认为 Google D
  • 将遗留的ant项目迁移到maven / gradle

    我有一个遗留的 JAVA 项目 我们使用 Ant 来构建它 我们计划继续使用 ant 来构建项目 但将依赖管理委托给maven gradle而不影响现有的构建过程 前进的最佳方式是什么 使用 Maven 还是使用 gradle 由于现有项目
  • 如何将SSMS脚本表编辑为模板?

    在 SQL Server Management Studio 中表的上下文菜单中 公共项下有几个项Script Table as SELECT to INSERT to UPDATE to DELETE to 对于所有对象都相同 例如存储过
  • Elm - 文本区域选择范围消失

    I implemented a
  • 如何以编程方式授权用户进入phpMyAdmin?

    为了在 phpMyAdmin 中授权用户 当我们的应用程序中满足特定条件时 我们创建一个隐藏表单 带有预先填写的用户名和密码 并自动 使用 JavaScript 提交该表单 因此 我们正在执行此 技巧 if condition
  • Firestore 规则:当数据为数字时,条件检查失败

    以下是当条件中使用的文档字段的数据类型为 number 时失败的示例规则 match message box user id inbox allow read if get users request auth uid data user
  • iOS:如何在 Swift 中创建可扩展的 TableView,而不使用第三方库或 pod

    我已经用 swift 实现了 Tableview 但我想制作一个可扩展的 TableView 请给我一个想法 这是Tableview的代码 MARK TableView Delegate and Datasource func tableV
  • 在Android中设置ViewPager的默认页面

    我使用以下代码 MAX 是 2 页 默认位置为 0 并在右侧添加新页面 我膨胀了两个布局文件 如何在应用程序启动时显示 page1 并在左侧添加新页面 谢谢 main xml
  • .NET:考虑夏令时

    我有一个创建 UTC 的方法DateTime根据用户输入 使用其地理位置的 GMT 偏移量 public static DateTime LocalToUtc int year int month int day int hour deci