Tag: datetimeoffset

‘DateTime’和’DateTimeOffset’之间的区别

DateTime和DateTimeOffset对象有什么区别? 我们什么时候应该使用每一个? 在可能更改服务器区域的Web应用程序中,存储日期和时间。 哪一个更好,还是有其他建议?

将日期字符串解析为某个时区(支持夏令时)

好吧,过去几周我一直在努力工作,我遇到了一个小问题。 我认为我的思想现在不能完成任务:)所以我需要一些提示/帮助! 这可能很简单,但我的头还没有点击。 用户将在AEST中输入日期和时间。 还有一个应用程序集“默认”时区(因为它可能需要更改),目前设置为“AUS东部标准时间” 因此,我们在美国的服务器上有一个没有时区和定义的系统时区的用户字符串(因此本地不匹配,无法更改或使用) 现在我需要的是一种方式来说“使用时区X解析此用户输入的字符串”我不能只输入+10或+11作为偏移量,因为日期可以在夏令时之内或之外; 即使对于相同的时区,肯定会在+10和+11之间进行更改! 当前的AEST时间也可能在DST之内或之外,因此我不能只将UTC日期转换为当前的AEST时间并获取“zzz”字符串并附加它,因为日期将在一小时后关闭以输入任何内容当前DST设置。 现在代码实际上就是这样: TimeZoneInfo ConvTo = TimeZoneInfo.FindSystemTimeZoneById(ConfigurationManager.AppSettings[“DefaultTimeZone”]); DateTimeOffset getDate = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, ConvTo); string TimeZoneId = ” ” + getDate.ToString(“zzz”); DateTimeOffset cvStartDate = DateTimeOffset.MinValue; DateTimeOffset.TryParse(StartDate + TimeZoneId, out cvStartDate); 然后我通过检查它是否仍然== DateTimeOffset.MinValue或将其转换为UTC并添加到数据库来检查日期是否无效,它将在显示时转换回AEST。 然而,有些日期是一小时,其他日期是完美的(如预期的那样):) 解决这个问题最优雅的方法是什么? 编辑: 为了帮助解释这个问题,我写了一些测试代码作为Windows测试应用程序: // User entered date string EnteredDate = “2011/01/01 10:00:00 AM”; // Get the timezone […]

DateTimeOffset如何处理夏令时?

我知道DateTimeOffset存储UTC日期/时间和偏移量。 我也从MSDN博客文章中了解到DateTimeOffset应该用于“使用夏令时”。 我正在努力理解的是DateTimeOffset“如何工作夏令时”。 我的理解,很少有,是夏令时是一个政治决定,不能从纯粹的抵消推断出来。 如果它只存储一个偏移量,那么这个结构对DST是否友好呢? 我认为可能有一种方法可以将TimeZoneInfo类与DateTimeOffset结合使用。 我该怎么办? 最后,有什么更好的方法可以实现以下目标吗? (我看过Jon Skeet关于Noda-Time的一些post,但我认为它尚未准备好生产,我不知道它是否能很好地融入我们现有的解决方案)。 这是我们的场景。 该服务器是出于在英国时间运行的不幸遗留原因。 我们的客户开始从澳大利亚投入运营,其中有多个时区。 其他国家可以随时投入使用。 我们有一个基于Hardcodet调度程序的调度程序 (使用DateTimeOffset)。 它工作得很好。 但是,在我们的数据库中,我们只存储足够的数据来构造DateTime对象(见下文),在我们的子类和管道代码中我们只使用DateTime,因为最初我们只支持英国用户。 该调度程序负责固定和动员工厂设备。 因此,计划的事件在用户的DST调整的本地时间运行至关重要。 用户在我们的网站上输入时间表; 目前,它作为星期几,小时和分钟存储在数据库中。 当读取数据时,我们为下一天,小时和分钟的出现创建一个DateTime对象。 我可以自由地更改db结构以另外存储偏移量或时区。 当该日期和时间到达时,调度程序发送命令(并重试一段时间)。 然后它会在下周的同一天和时间再次运行(尽管该服务实际上已经被回收,代码将再次运行)。 我需要实现的是使用从Hardcodet子类调度的调度程序在该时区调整的本地日期和时间触发调度事件。 如果DateTimeOffset确实是DST感知的,那么我需要做的就是存储一个偏移量并改变我们的管道代码以使用这个结构,但我得到的印象并不是那么简单。 (我们或许可以从工厂的GPS位置获取当前时区,但这是另一天的讨论:))。