Esempio n. 1
0
        public void WorkItem12159_2()
        {
            // New set of bugs
            // ===============
            //
            Console.WriteLine("============ Zone America/Chicago (GMT-06:00) =============");
            TzTimeZone zone = TzTimeZone.CurrentTimeZone;
            Assert.AreEqual(DateTime.UtcNow.Hour, zone.ToUniversalTime(DateTime.Now).Hour);

            zone = TzTimeZone.GetTimeZone(TzConstants.TimezoneAmericaChicago);
            Console.WriteLine("zone.StandardName: '" + zone.StandardName + "'");
            Console.WriteLine("zone.GetUtcOffset(Now).TotalHours: '" + zone.GetUtcOffset(DateTime.Now).TotalHours + "'");
            Console.WriteLine("DateTime.UtcNow: " + DateTime.UtcNow);
            Console.WriteLine("zone.ToUniversalTime(now): '" + zone.ToUniversalTime(DateTime.Now) + "'");
            TzDateTime dtDate = new TzDateTime(zone.ToLocalTime(DateTime.UtcNow), zone);
            dtDate.DateTimeLocal = DateTime.Parse("2007-09-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-09-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");
            dtDate.DateTimeLocal = DateTime.Parse("2007-12-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-12-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");
            Console.WriteLine("zone.IsDaylightSavingTime(Now): '" + zone.IsDaylightSavingTime(DateTime.Now) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2007-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-09-15")) + "'");
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2007-09-15")));
            Console.WriteLine("zone.IsDaylightSavingTime('2007-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-12-15")) + "'");
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2007-12-15")));
            Console.WriteLine("zone.IsDaylightSavingTime('2008-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2008-09-15")) + "'");
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-09-15")));
            Console.WriteLine("zone.IsDaylightSavingTime('2008-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2008-12-15")) + "'");
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-12-15")));
            //Console.WriteLine("zone.IsDaylightSavingTime('2016-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2016-09-15")) + "'");
            //Console.WriteLine("zone.IsDaylightSavingTime('2016-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2016-12-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('1974-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("1974-09-15")) + "'");
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("1974-09-15")));
            Console.WriteLine("zone.IsDaylightSavingTime('1974-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("1974-12-15")) + "'");
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("1974-12-15")));
            Console.WriteLine("--------- Converting local time to UTC -------------");

            // April 2nd, 2006 2am time changes
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-01")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-02")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-03")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-02 01:00")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-02 01:59")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-02 02:00")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-04-02 02:01")));
            Console.WriteLine("DST on rule <= 2006 for America/Chicago: Apr Sun>=1 2:00 (2am (8:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 01:00")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2006-04-02 01:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 01:30")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2006-04-02 01:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 02:00")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2006-04-02 02:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 02:30")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2006-04-02 02:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 03:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2006-04-02 03:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 03:30")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2006-04-02 03:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-04-02 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-04-02 04:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2006-04-02 04:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-05-10 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-05-10 03:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2006-05-10 03:00")).Hour);

            // 2006 October last sun 29 at 2 am
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-28")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-29")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-30")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-29 01:00")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-29 01:59")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-29 02:00")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2006-10-29 02:01")));
            Console.WriteLine("DST off rule <= 2006 for America/Chicago: Nov Sun>=1 2:00 (2am (7:00 UTC) becomes 1am)");
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-10-29 00:00")) + "'");
            Assert.AreEqual(5, zone.ToUniversalTime(DateTime.Parse("2006-10-29 00:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 00:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-10-29 00:30")) + "'");
            Assert.AreEqual(5, zone.ToUniversalTime(DateTime.Parse("2006-10-29 00:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-11-04 01:00")) + "'");
            Assert.AreEqual(6, zone.ToUniversalTime(DateTime.Parse("2006-10-29 01:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-11-04 01:30")) + "'");
            Assert.AreEqual(6, zone.ToUniversalTime(DateTime.Parse("2006-10-29 01:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-11-04 02:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2006-10-29 02:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2006-11-04 02:30")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2006-10-29 02:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-11-04 03:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2006-10-29 03:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2006-10-29 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2006-12-12 03:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2006-10-29 03:00")).Hour);

            CheckToUniversalTime(zone, "2007");

            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-8")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-9")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-10")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-9 01:00")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-9 01:59")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-9 02:00")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-03-9 02:01")));
            Console.WriteLine("DST on rule >= 2007 for America/Chicago: Mar Sun>=8 2:00 (2am (8:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 01:00")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2008-03-09 01:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 01:30")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2008-03-09 01:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 02:00")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2008-03-09 02:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 02:30")) + "'");
            Assert.AreEqual(7, zone.ToUniversalTime(DateTime.Parse("2008-03-09 02:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 03:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2008-03-09 03:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 03:30")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2008-03-09 03:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 04:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2008-03-09 04:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-05-10 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-05-10 03:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2008-05-09 03:00")).Hour);

            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-1")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-2")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-3")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-2 01:00")));
            Assert.IsTrue(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-2 01:59")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-2 02:00")));
            Assert.IsFalse(zone.IsDaylightSavingTime(DateTime.Parse("2008-11-2 02:01")));
            Console.WriteLine("DST off rule >= 2007 for America/Chicago: Nov Sun>=1 2:00 (2am (7:00 UTC) becomes 1am)");
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 00:00")) + "'");
            Assert.AreEqual(5, zone.ToUniversalTime(DateTime.Parse("2008-11-02 00:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 01:00")) + "'");
            Assert.AreEqual(6, zone.ToUniversalTime(DateTime.Parse("2008-11-02 01:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 01:30")) + "'");
            Assert.AreEqual(6, zone.ToUniversalTime(DateTime.Parse("2008-11-02 01:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 02:00")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2008-11-02 02:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 02:30")) + "'");
            Assert.AreEqual(8, zone.ToUniversalTime(DateTime.Parse("2008-11-02 02:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 03:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2008-11-02 03:00")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-11-02 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-11-02 03:30")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2008-11-02 03:30")).Hour);
            Console.WriteLine("zone.ToUniversalTime('2008-12-12 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-12-12 03:00")) + "'");
            Assert.AreEqual(9, zone.ToUniversalTime(DateTime.Parse("2008-12-02 03:00")).Hour);

            zone = PublicDomain.TzTimeZone.GetTimeZone(TzConstants.TimezoneEuropeParis);

            Console.WriteLine("zone = PublicDomain.TzTimeZone.GetTimeZone('Europe/Paris')");
            Console.WriteLine("zone.GetUtcOffset(Now).TotalHours: '" + zone.GetUtcOffset(DateTime.Parse("2007-01-01")).TotalHours + "'");
            Console.WriteLine("zone.GetUtcOffset(Now).TotalHours: '" + zone.GetUtcOffset(DateTime.Parse("2007-06-01")).TotalHours + "'");
            Console.WriteLine("zone.ToUniversalTime(now): '" + zone.ToUniversalTime(DateTime.Now) + "'");
            Console.WriteLine("zone.DaylightName(): '" + zone.DaylightName + "'");
            Console.WriteLine("zone.GetDaylightChanges(2004).Start: '" + zone.GetDaylightChanges(2004).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2004).End: '" + zone.GetDaylightChanges(2004).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2005).Start: '" + zone.GetDaylightChanges(2005).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2005).End: '" + zone.GetDaylightChanges(2005).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2006).Start: '" + zone.GetDaylightChanges(2006).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2006).End: '" + zone.GetDaylightChanges(2006).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2007).Start: '" + zone.GetDaylightChanges(2007).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2007).End: '" + zone.GetDaylightChanges(2007).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2008).Start: '" + zone.GetDaylightChanges(2008).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2008).End: '" + zone.GetDaylightChanges(2008).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2009).Start: '" + zone.GetDaylightChanges(2009).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2009).End: '" + zone.GetDaylightChanges(2009).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2010).Start: '" + zone.GetDaylightChanges(2010).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2010).End: '" + zone.GetDaylightChanges(2010).End + "'");
            Console.WriteLine("---------------");

            dtDate = new PublicDomain.TzDateTime(zone.ToLocalTime(DateTime.UtcNow), zone);
            //DST
            dtDate.DateTimeLocal = DateTime.Parse("2007-09-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-09-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");
            //Non-DST
            dtDate.DateTimeLocal = DateTime.Parse("2007-12-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-12-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");
            //IsDaylightSavingTime
            Console.WriteLine("zone.IsDaylightSavingTime(Now): '" + zone.IsDaylightSavingTime(DateTime.Now) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2007-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-09-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2007-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-12-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2008-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2008-09-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2008-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2008-12-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2016-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2016-09-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2016-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2016-12-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('1974-09-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("1974-09-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('1974-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("1974-12-15")) + "'");
            Console.WriteLine("--------- Converting local time to UTC -------------");
            //ToUniversalTime around DST breaks
            Console.WriteLine("zone.ToUniversalTime('2007-01-25 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-01-25 00:00")) + "'");
            Console.WriteLine("DST on rule for Europe/Paris: Mar lastSun 1:00u (2am (1:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 00:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 02:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 03:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 04:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-03-25 04:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-03-25 04:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-09-12 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-09-12 03:00")) + "'");
            Console.WriteLine("DST off rule for Europe/Paris: Oct lastSun 1:00u (3am (1:00 UTC) becomes 2am)");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 00:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 01:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 02:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 03:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-10-28 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-10-28 04:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-12-12 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-12-12 03:00")) + "'");
            Console.WriteLine("DST on rule for Europe/Paris: Mar lastSun 1:00u (2am (1:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 00:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 02:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 03:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 04:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-30 04:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-30 04:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-05-10 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-05-10 03:00")) + "'");
            Console.WriteLine("DST off rule for Europe/Paris: Oct lastSun 1:00u (3am (1:00 UTC) becomes 2am)");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 00:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 00:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 01:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 01:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 02:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 02:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 03:30'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 03:30")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-10-26 04:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-10-26 04:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-12-12 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-12-12 03:00")) + "'");
            Console.WriteLine("--------- Converting UTC to local time -------------");
            Console.WriteLine("zone.ToLocalTime('2007-01-25 00:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-01-25 00:00")) + "'");
            Console.WriteLine("DST on rule for Europe/Paris: Mar lastSun 1:00u (2am (1:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 00:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 00:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 00:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 00:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 01:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 01:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 01:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 01:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 02:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 02:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 02:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 02:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 03:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-03-25 04:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-03-25 04:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-09-12 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-09-12 03:00")) + "'");
            Console.WriteLine("DST off rule for Europe/Paris: Oct lastSun 1:00u (3am (1:00 UTC) becomes 2am)");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 00:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 00:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 00:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 00:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 01:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 01:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 01:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 01:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 02:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 02:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 02:30'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 02:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 03:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-10-28 04:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-10-28 04:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2007-12-12 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2007-12-12 03:00")) + "'");
            Console.WriteLine("DST on rule for Europe/Paris: Mar lastSun 1:00u (2am (1:00 UTC) becomes 3am)");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 00:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 00:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 00:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 00:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 01:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 01:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 01:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 01:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 02:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 02:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 02:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 02:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 03:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-03-30 04:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-03-30 04:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-05-10 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-05-10 03:00")) + "'");
            Console.WriteLine("DST off rule for Europe/Paris: Oct lastSun 1:00u (3am (1:00 UTC) becomes 2am)");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 00:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 00:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 00:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 00:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 01:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 01:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 01:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 01:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 02:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 02:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 02:30'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 02:30")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 03:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-10-26 04:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-10-26 04:00")) + "'");
            Console.WriteLine("zone.ToLocalTime('2008-12-12 03:00'): '" + zone.ToLocalTime(DateTime.Parse("2008-12-12 03:00")) + "'");
        }
Esempio n. 2
0
        public void WorkItem12159()
        {
            Console.WriteLine("12159");

            TzTimeZone zone = TzTimeZone.ZoneUsCentral;

            Console.WriteLine(zone.Now.DateTimeLocal);

            // Bug #1:
            Console.WriteLine("zone.StandardName: '" + zone.StandardName + "'");
            Console.WriteLine("zone.GetUtcOffset(Now).TotalHours: '" + zone.GetUtcOffset(DateTime.Now).TotalHours + "'");
            Console.WriteLine("zone.ToUniversalTime(now): '" + zone.ToUniversalTime(DateTime.Now) + "'");
            Console.WriteLine("zone.DaylightName(): '" + zone.DaylightName + "'");
            Console.WriteLine("zone.GetDaylightChanges(2004).Start: '" + zone.GetDaylightChanges(2004).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2004).End+#58; '" + zone.GetDaylightChanges(2004).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2005).Start: '" + zone.GetDaylightChanges(2005).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2005).End+#58; '" + zone.GetDaylightChanges(2005).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2006).Start: '" + zone.GetDaylightChanges(2006).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2006).End+#58; '" + zone.GetDaylightChanges(2006).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2007).Start: '" + zone.GetDaylightChanges(2007).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2007).End+#58; '" + zone.GetDaylightChanges(2007).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2008).Start: '" + zone.GetDaylightChanges(2008).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2008).End+#58; '" + zone.GetDaylightChanges(2008).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2009).Start: '" + zone.GetDaylightChanges(2009).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2009).End+#58; '" + zone.GetDaylightChanges(2009).End + "'");
            Console.WriteLine("zone.GetDaylightChanges(2010).Start: '" + zone.GetDaylightChanges(2010).Start + "'");
            Console.WriteLine("zone.GetDaylightChanges(2010).End+#58; '" + zone.GetDaylightChanges(2010).End + "'");

            // Bug #2:
            Console.WriteLine("zone.IsDaylightSavingTime(Now): '" + zone.IsDaylightSavingTime(DateTime.Now) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime(#12/15/2007#): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-12-15")) + "'");
            Console.WriteLine("zone.IsDaylightSavingTime('2007-12-15'): '" + zone.IsDaylightSavingTime(DateTime.Parse("2007-12-15")) + "'");

            // Bug #3:
            TzDateTime dtDate = new PublicDomain.TzDateTime(zone.ToLocalTime(DateTime.UtcNow), zone);
            dtDate.DateTimeLocal = DateTime.Parse("2007-09-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-09-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");
            dtDate.DateTimeLocal = DateTime.Parse("2007-12-12 03:00");
            Console.WriteLine("dtDate.DateTimeLocal = '2007-12-12 03:00'");
            Console.WriteLine("zone.GetUtcOffset(dtDate).TotalHours: '" + zone.GetUtcOffset(dtDate.DateTimeLocal).TotalHours + "'");

            // Bug #4:
            Console.WriteLine("zone.ToUniversalTime('2007-09-12 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-09-12 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-11-04 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-11-04 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-11-04 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-11-04 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-11-04 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-11-04 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2007-12-04 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2007-12-04 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 01:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 01:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 02:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 02:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-03-09 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-03-09 03:00")) + "'");
            Console.WriteLine("zone.ToUniversalTime('2008-05-10 03:00'): '" + zone.ToUniversalTime(DateTime.Parse("2008-05-10 03:00")) + "'");

            // Bug #5:
            zone = PublicDomain.TzTimeZone.GetTimeZone("Europe/Paris");
            Console.WriteLine("zone.GetDaylightChanges(2004).Start: '" + zone.GetDaylightChanges(2004).Start + "'");
        }