Merge pull request #487 from mayerwin/patch-1
authorMiguel de Icaza <miguel@gnome.org>
Fri, 7 Dec 2012 21:59:03 +0000 (13:59 -0800)
committerMiguel de Icaza <miguel@gnome.org>
Fri, 7 Dec 2012 21:59:03 +0000 (13:59 -0800)
Update mcs/class/System.Core/System/TimeZoneInfo.cs

mcs/class/System.Core/System/TimeZoneInfo.cs

index af52741bf8dcf8e3901ad7479b0053784e5478ee..3bfcd0c204c62299d4b5d5f0b2e7f4144e032721 100644 (file)
@@ -246,9 +246,21 @@ namespace System
 
                }
 
-               public static DateTimeOffset ConvertTime (DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone)
+               public static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone) 
                {
-                       throw new NotImplementedException ();
+                       if (destinationTimeZone == null) 
+                               throw new ArgumentNullException("destinationTimeZone");
+               
+                       var utcDateTime = dateTimeOffset.UtcDateTime;
+                       AdjustmentRule rule = GetApplicableRule (utcDateTime);
+               
+                       if (rule != null && destinationTimeZone.IsDaylightSavingTime(utcDateTime)) {
+                               var offset = destinationTimeZone.BaseUtcOffset + rule.DaylightDelta;
+                               return new DateTimeOffset(DateTime.SpecifyKind(utcDateTime, DateTimeKind.Unspecified) + offset, offset);
+                       }
+                       else {
+                               return new DateTimeOffset(DateTime.SpecifyKind(utcDateTime, DateTimeKind.Unspecified) + destinationTimeZone.BaseUtcOffset, destinationTimeZone.BaseUtcOffset);
+                       }
                }
 
                public static DateTime ConvertTimeBySystemTimeZoneId (DateTime dateTime, string destinationTimeZoneId)