Tag: dst

在NodaTime中获得夏令时开始和结束时间

如何使用Noda Time获取夏令时的开始和结束日期? 下面的function完成了这个任务,但它非常笨拙,并且正在寻求一个更简单的解决方案。 /// /// Gets the start and end of daylight savings time in a given time zone /// /// The time zone in question /// A tuple indicating the start and end of DST /// Assumes this zone has daylight savings time private Tuple GetZoneStartAndEnd(DateTimeZone tz) { int thisYear = TimeUtils.SystemLocalDateTime.Year; // Get […]

Quartz.NET – 这个unit testing不应该通过吗?

这个问题与这个问题有关,但是更加笼统,可以独立对待。 编辑:Quartz版本是v2.0.1 根据我的理解,以下unit testing应通过: [Test] public void Test() { // run every first day of month at 14:00 hours CronExpression expression = new CronExpression(“0 0 14 1 * ?”); // TimeZoneInfo.Local = {(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien} if (!TimeZoneInfo.Local.SupportsDaylightSavingTime) { return; } // get “summertime” period for current timezone var daylightChange = TimeZone.CurrentTimeZone.GetDaylightChanges(2013); […]

检查夏令时是否有效?

如何检查丹麦白天节省的时间是否已经生效,如果是,那么我的数据加1小时,否则不行? 我有一个xml文件:

c#daylight savings重复小时转换为UTC

我正在使用TimeZoneInfo在客户端wallclock’Eastern Time’和UTC之间进行转换。 我的问题是在秋季DST更改期间发生的“重复”小时。 在从UTC转换到东部期间: 2010-11-07 06:00 UTC – > 2010-11-07T 01 :00:00-03:30 2010-11-07 07:00 UTC – > 2010-11-07T 01 :00:00-03:30 我怎么知道哪个是第一个小时,哪个是第二个小时? DateTime.IsDaylightSavingTime()在两个小时都返回false,但是它不应该在第一个小时返回true吗? 同样,我如何存储2010-11-07 01:00:00 -03:30? 我的应用程序如何转换为UTC,因为它可能是2010-11-07 06:00或2010-11-07 07:00 对于那些需要代码的人,我骑自行车穿过一个带有UTC日期时间列的数据表,尝试使用’DupHr’列转换为东部第二个重复小时,但我总是在01:00时结束’DupHr’= 1。 TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(“Eastern Standard Time”); DateTime EasternTime; DateTime DuplicateHour = new DateTime(2010, 11, 7, 1, 0, 0); // hard coded for this example TimeZoneInfo.AdjustmentRule[] […]

C#事件检测夏令时甚至手动时间更改

我在服务器上运行应用程序作为服务,然后我有多个客户端连接到该服务。 我在每个客户端窗体表单应用程序上显示确切的服务器时间,因此我需要一种机制来检测服务器上的任何时间更改,以便我可以将其发送到客户端进行显示。 查看MSDN我找到了SystemEvents.TimeChanged,我觉得我很幸运,因为在使用Visual Studio下面的代码进行测试时,一切都很好: SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged); static void SystemEvents_TimeChanged(object sender, EventArgs e) { //Occurs when user manually changes the time or due to //daylight saving time. Server will issue its latest time //to all the clients so time can be adjusted. } 不幸的是,当我将其作为服务运行时,此事件永远不会被触发,因为在MSDN上查看精细打印,TimeChanged事件仅在具有消息泵(也称为必须具有运行forms)的应用程序中激活。 它在Visual Studio中工作,因为当我将其作为非服务模式运行时,它有一个表单。 我可以通过选中“允许服务与桌面交互”选项来纠正这个问题,但这种做法违背了我尝试将应用程序作为服务运行的目的。 我可以在应用程序中创建一个计时器刻度事件来检查时间变化,假设每10秒左右,但这只是一个很大的开销,只是为了检查服务器机器每年发生两次或每次3次的随机时间变化。 所以任何人都知道一个C#事件触发时间更改,该事件在没有消息泵的应用程序中有效吗? 如果微软不包含以这种方式运作的事件,我会感到惊讶 谢谢。

将UTC DateTime转换为另一个时区

我有来自数据库记录的UTC DateTime值。 我还有一个用户指定的时区(TimeZoneInfo的一个实例)。 如何将UTC DateTime转换为用户的本地时区? 另外,如何确定用户指定的时区当前是否正在观察夏令时? 我正在使用.NET 3.5。 谢谢,马克

ConvertTimeFromUtc()和ToUniversalTime()是否处理​​DST?

如果夏令时生效,并且日期对象已保存到数据库中(UTC格式),您将检索该数据库以在视图中显示它(例如asp.net-mvc的视图)。 你通过使用这种方法来做到这一点: public static DateTime ConvertToLocalTimeFromUtcTime(DateTime utcDate, string timeZoneId) { TimeZoneInfo localZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, localZone); if (localZone.IsDaylightSavingTime(localTime)) localTime = localTime.AddHours(1); // is this needed !? return localTime; } 问题是, TimeZoneInfo.ConvertTimeFromUtc()处理DST,或者您是否必须自己检查并向日期对象添加或减去X小时? 通过使用ToUniversalTime()将日期对象转换为UTC格式来将日期对象持久化到数据库时的相同问题。