相关疑难解决方法(0)

DateTimeOffset如何处理夏令时?

我知道DateTimeOffset存储UTC日期/时间和偏移量.我也从MSDN博客文章中了解到,DateTimeOffset应该用于"使用夏令时".

我正在努力理解的是DateTimeOffset"夏令时"的工作原理.我的理解,很少有,是夏令时是一个政治决定,不能从纯粹的抵消中推断出来.如果它只存储一个偏移,那么这个结构对DST是否友好呢?

我认为可能有一种方法可以将TimeZoneInfo类与DateTimeOffset结合使用.我该怎么办?

最后,有什么更好的方法可以实现以下目标吗?

(我看过Jon Skeet关于Noda-Time的一些帖子,但我认为它还没有准备好生产,我不知道它是否能很好地融入我们现有的解决方案).

这是我们的场景.该服务器是出于在英国时间运行的不幸遗留原因.我们的客户开始从澳大利亚投入运营,其中有多个时区.其他国家可以随时投入使用.

我们有一个基于Hardcodet调度程序的调度程序(使用DateTimeOffset).它工作得很好.但是,在我们的数据库中,我们只存储足够的数据来构造DateTime对象(见下文),在我们的子类和管道代码中我们只使用DateTime,因为最初我们只支持英国用户.

该调度程序负责固定和动员工厂设备.因此,预定事件在用户的DST调整后的当地时间运行至关重要.

用户在我们的网站上输入时间表; 目前,它作为星期几,小时和分钟存储在数据库中.当读取数据时,我们为该日,小时和分钟的下一次出现创建一个DateTime对象.我可以自由地改变db结构以另外存储偏移量或时区.

当该日期和时间到达时,调度程序发送命令(并重试一段时间).它然后在下周的同一天和时间再次运行(虽然该服务实际上已经被回收,然后代码将再次运行).

我需要实现的是使用从Hardcodet子类调度的调度程序在该时区调整的本地日期和时间触发调度事件.如果DateTimeOffset确实是DST感知的,那么我需要做的就是存储一个偏移并改变我们的管道代码以使用这个结构,但我得到的印象并不是那么简单.(我们或许可以从工厂的GPS位置获取当前时区,但这是另一天的讨论:)).

.net c# scheduling datetimeoffset nodatime

22
推荐指数
1
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

datetimeoffset ×1

nodatime ×1

scheduling ×1