Update mcs/class/System.Core/System/TimeZoneInfo.cs
authormayerwin <traderwin@gmail.com>
Sat, 27 Oct 2012 13:35:56 +0000 (21:35 +0800)
committermayerwin <traderwin@gmail.com>
Sat, 27 Oct 2012 13:35:56 +0000 (21:35 +0800)
Implementing missing ConvertTime with DateTimeOffset.

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

index f3a2a643b28be4c54d1234d44be18356b48a5bbc..19423d419909446c35470f94b94b215d01477d07 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)