【发布时间】:2018-04-26 10:49:22
【问题描述】:
我已经阅读了一些关于类似主题的帖子,但似乎没有任何内容可以回答这个问题。我的数据库有以下关于时间的信息
- 星期几(0-6 之间的数字)
- 时间(从用户当地时间午夜开始的毫秒数)
- UTC 偏移量(与 UTC 不同的小时数)
- DST Observed(布尔值表示是否在该时区观察到 DST)
此数据代表营业时间。所以每天都有时间。我想在用户当地时间显示该时间,并假设每一天都在未来
int dayOffset = availability.Day - (int)now.DayOfWeek
if (dayOffset < 0)
dayOffset += 7;
当一个时区可能正在观察 DST 而另一个时区可能确实观察到 DST 但还没有时,我真的很难理解时区和处理。
我目前的主要问题是我认为我需要为非本地时间创建一个DateTimeOffset 对象,但我不知道该怎么做,因为我不知道 DST 是否是有效与否。
我希望我清楚自己。使用日期和时间真的是一种令人费解的体验!
【问题讨论】:
-
你已经尝试过 Quartz.NET 了吗?它有 ChronExpressions,可以帮助您计算开放时间。另外,看看这个链接:cronmaker.com
-
我看到的主要问题是您只有关于时区是否使用 DST 的信息,但没有关于它何时处于活动状态的信息。因此,您将无法知道是否应该使用 DST。
-
@Conyc:如果 OP 在配置了客户端本地时区的操作系统上运行其系统,他可以轻松正确地将 UTC 时间转换为本地时间。
-
@Conyc 如果我假设“星期五”的时间是从现在起的下一个星期五,那么我有一个日期,我可以肯定知道 DST 是否会在该日期生效
-
问题不在于您不知道夏令时是否会在您希望显示时间的当地时间生效。问题是原始时间数据存储在本地没有关于 DST 何时生效的信息。您必须记住,不同的国家/地区在不同的时间更改和更改夏令时。
标签: c# datetime datetimeoffset