[corlib] TimeZoneInfo.ConvertTimeToUtc maximum datetime handling
authorMarek Safar <marek.safar@gmail.com>
Thu, 5 Feb 2015 12:25:49 +0000 (07:25 -0500)
committerMarek Safar <marek.safar@gmail.com>
Thu, 5 Feb 2015 12:25:49 +0000 (07:25 -0500)
mcs/class/corlib/System/TimeZoneInfo.cs
mcs/class/corlib/Test/System/TimeZoneInfoTest.cs

index fefee63a185bda4c8a402bdc58ce6bb8af3f6156..b3a6fd7b7fca851df62ef547c8882c3163585578 100644 (file)
@@ -375,6 +375,8 @@ namespace System
                                var ticks = dateTime.Ticks - sourceTimeZone.BaseUtcOffset.Ticks;
                                if (ticks < DateTime.MinValue.Ticks)
                                        ticks = DateTime.MinValue.Ticks;
+                               else if (ticks > DateTime.MaxValue.Ticks)
+                                       ticks = DateTime.MaxValue.Ticks;
 
                                return new DateTime (ticks, DateTimeKind.Utc);
                        }
index 093b5ec670d83a3cbe46c0dd0ad97c5a89cda6cf..a5593c08b32a186452497ff08f072f27af2c711d 100644 (file)
@@ -425,11 +425,13 @@ namespace MonoTests.System
                        }
 
                        [Test]
-                       public void ConvertTimeToUtc_MinValue ()
+                       public void ConvertTimeToUtc_Overflow ()
                        {
-                               var dt = new DateTime (0);
-                               var res = TimeZoneInfo.ConvertTimeToUtc (dt);
-                               Assert.AreEqual (res.Kind, DateTimeKind.Utc);
+                               var res = TimeZoneInfo.ConvertTimeToUtc (new DateTime (0));
+                               Assert.AreEqual (res.Kind, DateTimeKind.Utc, "#1");
+
+                               res = TimeZoneInfo.ConvertTimeToUtc (DateTime.MaxValue);
+                               Assert.AreEqual (res.Kind, DateTimeKind.Utc, "#2");
                        }
 
                        [Test]