コード例 #1
0
        /// <summary>
        /// Initializes this transition based on the specified transition time.
        /// </summary>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        internal override void InitializeFromTransitionTime(Misc.TransitionTime transitionTime)
        {
            base.InitializeFromTransitionTime(transitionTime);

            this.timeOffset = transitionTime.TimeOfDay.TimeOfDay;
            this.month      = transitionTime.Month;
        }
コード例 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LegacyAvailabilityTimeZoneTime"/> class.
        /// </summary>
        /// <param name="transitionTime">The transition time used to initialize this instance.</param>
        /// <param name="delta">The offset used to initialize this instance.</param>
        internal LegacyAvailabilityTimeZoneTime(Misc.TransitionTime transitionTime, TimeSpan delta)
            : this()
        {
            this.delta = delta;

            if (transitionTime.IsFixedDateRule)
            {
                // TimeZoneInfo doesn't support an actual year. Fixed date transitions occur at the same
                // date every year the adjustment rule the transition belongs to applies. The best thing
                // we can do here is use the current year.
                this.year      = DateTime.Today.Year;
                this.month     = transitionTime.Month;
                this.dayOrder  = transitionTime.Day;
                this.timeOfDay = transitionTime.TimeOfDay.TimeOfDay;
            }
            else
            {
                // For floating rules, the mapping is direct.
                this.year         = 0;
                this.month        = transitionTime.Month;
                this.dayOfTheWeek = EwsUtilities.SystemToEwsDayOfTheWeek(transitionTime.DayOfWeek);
                this.dayOrder     = transitionTime.Week;
                this.timeOfDay    = transitionTime.TimeOfDay.TimeOfDay;
            }
        }
コード例 #3
0
 public AdjustmentRule(TimeZoneInfo.AdjustmentRule rule)
 {
     Origin    = rule;
     DateStart = rule.DateStart;
     DateEnd   = rule.DateEnd;
     DaylightTransitionStart = new TransitionTime(rule.DaylightTransitionStart);
     DaylightTransitionEnd   = new TransitionTime(rule.DaylightTransitionEnd);
     DaylightDelta           = rule.DaylightDelta;
 }
コード例 #4
0
        /// <summary>
        /// Initializes this transition based on the specified transition time.
        /// </summary>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        internal override void InitializeFromTransitionTime(Misc.TransitionTime transitionTime)
        {
            base.InitializeFromTransitionTime(transitionTime);

            this.dayOfTheWeek = EwsUtilities.SystemToEwsDayOfTheWeek(transitionTime.DayOfWeek);

            // TimeZoneInfo uses week indices from 1 to 5, 5 being the last week of the month.
            // EWS uses -1 to denote the last week of the month.
            this.weekIndex = transitionTime.Week == 5 ? -1 : transitionTime.Week;
        }
コード例 #5
0
        public static TransitionTime CreateFixedDateRule(
            DateTime timeOfDay,
            int month,
            int day)
        {
            TransitionTime transitionTime = new TransitionTime();

            transitionTime.IsFixedDateRule = true;
            transitionTime.TimeOfDay       = timeOfDay;
            transitionTime.Month           = month;
            transitionTime.Day             = day;
            return(transitionTime);
        }
コード例 #6
0
        public static TransitionTime CreateFloatingDateRule(
            DateTime timeOfDay,
            int month,
            int week,
            DayOfWeek dayOfWeek)
        {
            TransitionTime transitionTime = new TransitionTime();

            transitionTime.IsFixedDateRule = false;
            transitionTime.TimeOfDay       = timeOfDay;
            transitionTime.Month           = month;
            transitionTime.Week            = week;
            transitionTime.DayOfWeek       = dayOfWeek;
            return(transitionTime);
        }
コード例 #7
0
        public static AdjustmentRule CreateAdjustmentRule(
            DateTime dateStart,
            DateTime dateEnd,
            TimeSpan daylightDelta,
            TransitionTime daylightTransitionStart,
            TransitionTime daylightTransitionEnd)
        {
            AdjustmentRule adjustmentRule = new AdjustmentRule();

            adjustmentRule.DateStart               = dateStart;
            adjustmentRule.DateEnd                 = dateEnd;
            adjustmentRule.DaylightDelta           = daylightDelta;
            adjustmentRule.DaylightTransitionStart = daylightTransitionStart;
            adjustmentRule.DaylightTransitionEnd   = daylightTransitionEnd;
            return(adjustmentRule);
        }
コード例 #8
0
        /// <summary>
        /// Creates a time zone transition based on the specified transition time.
        /// </summary>
        /// <param name="timeZoneDefinition">The time zone definition that will own the transition.</param>
        /// <param name="targetPeriod">The period the transition will target.</param>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        /// <returns>A TimeZoneTransition.</returns>
        internal static TimeZoneTransition CreateTimeZoneTransition(
            TimeZoneDefinition timeZoneDefinition,
            TimeZonePeriod targetPeriod,
            Misc.TransitionTime transitionTime)
        {
            TimeZoneTransition transition;

            if (transitionTime.IsFixedDateRule)
            {
                transition = new AbsoluteDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }
            else
            {
                transition = new RelativeDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }

            transition.InitializeFromTransitionTime(transitionTime);

            return(transition);
        }
コード例 #9
0
 /// <summary>
 /// Initializes this transition based on the specified transition time.
 /// </summary>
 /// <param name="transitionTime">The transition time to initialize from.</param>
 internal override void InitializeFromTransitionTime(Misc.TransitionTime transitionTime)
 {
     throw new ServiceLocalException(Strings.UnsupportedTimeZonePeriodTransitionTarget);
 }
コード例 #10
0
 internal static AdjustmentRule CreateAdjustmentRule(DateTime date1, DateTime date2, TimeSpan timeSpan, TransitionTime transitionTime1, TransitionTime transitionTime2)
 {
     return(new AdjustmentRule(TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(date1, date2, timeSpan, transitionTime1.Origin, transitionTime2.Origin)));
 }
コード例 #11
0
 /// <summary>
 /// Initializes this transition based on the specified transition time.
 /// </summary>
 /// <param name="transitionTime">The transition time to initialize from.</param>
 internal virtual void InitializeFromTransitionTime(Misc.TransitionTime transitionTime)
 {
 }
コード例 #12
0
        /// <summary>
        /// Initializes this transition based on the specified transition time.
        /// </summary>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        internal override void InitializeFromTransitionTime(Misc.TransitionTime transitionTime)
        {
            base.InitializeFromTransitionTime(transitionTime);

            this.dayOfMonth = transitionTime.Day;
        }