From: Miguel de Icaza Date: Fri, 7 Dec 2012 21:59:03 +0000 (-0800) Subject: Merge pull request #487 from mayerwin/patch-1 X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=01ea58cbd474d4a9230acbba5571738896539d42;hp=107e44e461ae22e5fcee195146d753d8e59e8bc8;p=mono.git Merge pull request #487 from mayerwin/patch-1 Update mcs/class/System.Core/System/TimeZoneInfo.cs --- diff --git a/mcs/class/System.Core/System/TimeZoneInfo.cs b/mcs/class/System.Core/System/TimeZoneInfo.cs index af52741bf8d..3bfcd0c204c 100644 --- a/mcs/class/System.Core/System/TimeZoneInfo.cs +++ b/mcs/class/System.Core/System/TimeZoneInfo.cs @@ -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)