Exemplo n.º 1
0
        private TimeSpan GetDailyDueTime()
        {
            DateTime now, firstExecution;

            switch (this.DailyExecutionDateTimeKind)
            {
            case DateTimeKind.Local:
                #region DateTimeKind.Local
                now = TimeZoneUtility.ConvertUTCDateToLocalizedDate(DateTime.UtcNow, this.DailyLocalizedExecutionTimeZoneInfo);

                firstExecution = new DateTime(now.Year, now.Month, now.Day
                                              , this.DailyLocalizedExecutionTime.Hour
                                              , this.DailyLocalizedExecutionTime.Minute
                                              , this.DailyLocalizedExecutionTime.Second
                                              , this.DailyLocalizedExecutionTime.Millisecond);

                if (firstExecution < now)
                {
                    firstExecution = firstExecution.AddDays(1);
                }

                return((TimeSpan)(TimeZoneUtility.ConvertUTCDateToLocalizedDate(firstExecution, this.DailyLocalizedExecutionTimeZoneInfo)
                                  - now));

                #endregion

            case DateTimeKind.Utc:
                #region DateTimeKind.Utc
                now = DateTime.UtcNow;

                firstExecution = new DateTime(now.Year, now.Month, now.Day
                                              , this.DailyUTCExecutionTime.Hour
                                              , this.DailyUTCExecutionTime.Minute
                                              , this.DailyUTCExecutionTime.Second
                                              , this.DailyUTCExecutionTime.Millisecond);

                if (firstExecution < now)
                {
                    firstExecution = firstExecution.AddDays(1);
                }

                return((TimeSpan)(firstExecution - now));

                #endregion

            default: throw new NotSupportedException();
            }
        }
Exemplo n.º 2
0
        public void Test_DailyExecutionTimeWithDaylightSavingAdjustment()
        {
            TimeZoneInfo timeZoneInfo = TimeZoneUtility.GetTimeZoneInfo("GMT Standard Time");

            List <DateTime> futureDates = new List <DateTime>()
            {
                new DateTime(2011, 3, 24, 23, 0, 0, DateTimeKind.Utc),
                new DateTime(2011, 3, 25, 23, 0, 0, DateTimeKind.Utc),
                new DateTime(2011, 3, 26, 23, 0, 0, DateTimeKind.Utc),
                new DateTime(2011, 3, 27, 23, 0, 0, DateTimeKind.Utc),
                new DateTime(2011, 3, 28, 23, 0, 0, DateTimeKind.Utc),
                new DateTime(2011, 3, 29, 23, 0, 0, DateTimeKind.Utc)
            };

            DateTime nowLocal = TimeZoneUtility.ConvertUTCDateToLocalizedDate(futureDates[0], timeZoneInfo).AddDays(-1);

            foreach (DateTime fd in futureDates)
            {
                Trace.WriteLine((TimeZoneUtility.ConvertUTCDateToLocalizedDate(fd, timeZoneInfo) - nowLocal).ToString() + "\n");
                nowLocal = (TimeZoneUtility.ConvertUTCDateToLocalizedDate(fd, timeZoneInfo));
            }
        }