Пример #1
0
        public void FindSystemTimeZoneById()
        {
            TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfoTest.MapTimeZoneId("Canada/Eastern"));

            Assert.IsTrue("EDT" == tzi.DaylightName || "Eastern Daylight Time" == tzi.DaylightName, "DaylightName");
            Assert.IsTrue("EST" == tzi.StandardName || "Eastern Standard Time" == tzi.StandardName, "StandardName");
            Assert.IsTrue(tzi.SupportsDaylightSavingTime, "SupportsDaylightSavingTime");
        }
Пример #2
0
        public void GetUTCNowAtDSTBoundaries()
        {
            TimeZoneInfo.TransitionTime startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 5, DayOfWeek.Sunday);

            TimeZoneInfo.TransitionTime endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 3, 0, 0), 10, 5, DayOfWeek.Sunday);

            TimeSpan delta = TimeSpan.FromMinutes(60.0);

            TimeZoneInfo.AdjustmentRule   adjustment  = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1970, 1, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
            TimeZoneInfo.TransitionTime   startTrans  = adjustment.DaylightTransitionStart;
            TimeZoneInfo.TransitionTime   endTrans    = adjustment.DaylightTransitionEnd;
            TimeZoneInfo.AdjustmentRule[] adjustments = { adjustment };

            TimeZoneInfo tzInfo = TimeZoneInfo.CreateCustomTimeZone("MY Standard Time", TimeSpan.Zero, "MST", "MST", "MDT", adjustments);

            TimeZoneInfoTest.SetLocal(tzInfo);

            DateTime st = new DateTime(2016, 3, 27, 1, 0, 0, DateTimeKind.Local);

            Assert.IsTrue(!tzInfo.IsDaylightSavingTime(st));
            Assert.IsTrue(!tzInfo.IsAmbiguousTime(st));
            Assert.IsTrue((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 1));
            st = new DateTime(2016, 3, 27, 3, 0, 0, DateTimeKind.Local);
            Assert.IsTrue(tzInfo.IsDaylightSavingTime(st));
            Assert.IsTrue(!tzInfo.IsAmbiguousTime(st));
            Assert.IsTrue((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 2));
            st = new DateTime(2016, 10, 30, 2, 0, 0, DateTimeKind.Local);
#if !MOBILE
            Assert.IsFalse(tzInfo.IsDaylightSavingTime(st));
            Assert.IsFalse(!tzInfo.IsAmbiguousTime(st));
            Assert.IsFalse((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 1));
            st = new DateTime(2016, 10, 30, 3, 0, 0, DateTimeKind.Local);
            Assert.IsTrue(!tzInfo.IsDaylightSavingTime(st));
            Assert.IsFalse(tzInfo.IsAmbiguousTime(st));
            Assert.IsTrue((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 3));
            st = new DateTime(2016, 10, 30, 4, 0, 0, DateTimeKind.Local);
            Assert.IsTrue(!tzInfo.IsDaylightSavingTime(st));
            Assert.IsTrue(!tzInfo.IsAmbiguousTime(st));
            Assert.IsTrue((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 4));
#endif
        }