c# - 如何将 UTC DateTimeOffset 转换为使用系统时区的 DateTime

标签 c# datetime timezone quartz.net datetimeoffset

Quartz.net 提供了获取下一次触发事件的下一次时间的方法:http://quartznet.sourceforge.net/apidoc/1.0/html/html/cc03bb79-c0c4-6d84-3d05-a17f59727c98.htm

文档声称此 Trigger.GetNextFireTimeUtc() 方法返回一个 DateTime? 但它实际上返回一个 DateTimeOffset?。我真的不明白 DateTimeOffset 的用途或为什么此函数返回一个而不是常规的 DateTime。我想要的只是下一次触发器运行但在我的时区内。

我做了这个 trigger.GetNextFireTimeUtc().Value.DateTime 但它给了我一个提前 2 小时的时间,即 UTC 时间。我怎样才能根据我的电脑得到正确的时间?

最佳答案

您可以只使用 DateTimeOffset.LocalDateTime属性:

trigger.GetNextFireTimeUtc().Value.LocalDateTime

来自文档:

If necessary, the LocalDateTime property converts the current DateTimeOffset object's date and time to the local system's date and time. The conversion is a two-step operation:

  • The property converts the current DateTimeOffset object's time to Coordinated Universal Time (UTC).
  • The property then converts UTC to local time.

不过,您确实应该研究一下 DateTimeOffset - 如果您将 BCL 用于日期/时间工作,这是一种需要了解的重要类型。

关于c# - 如何将 UTC DateTimeOffset 转换为使用系统时区的 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26296324/

相关文章:

c# - 如何从 OwnerActorNr 获取玩家姓名 | PUN2

C# 将 Lambda 表达式函数转换为描述性字符串

ruby-on-rails - ActiveRecord 中从 Rails 2.3 到 3.2 的日期转换

date - 如何从Elasticsearch用一种格式获取日期?

Ruby - 像在特定时区中一样解析时间戳

c# - Facebook Like 按钮,它可以设为只读吗?

c# - 带工具提示的图像控制

php - 从未按预期工作的一年的第一天减去 1 天

java - 东部夏令时间还是东部夏令时间?根据夏令时动态设置 3 个字母时区

php - 在 PHP 中为巴基斯坦设置时区