From 10eadfdd38d35fbc2906008375984770dcc478bc Mon Sep 17 00:00:00 2001 From: mayerwin Date: Sat, 27 Oct 2012 21:35:56 +0800 Subject: [PATCH] Update mcs/class/System.Core/System/TimeZoneInfo.cs Implementing missing ConvertTime with DateTimeOffset. --- mcs/class/System.Core/System/TimeZoneInfo.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/mcs/class/System.Core/System/TimeZoneInfo.cs b/mcs/class/System.Core/System/TimeZoneInfo.cs index f3a2a643b28..19423d41990 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) -- 2.25.1