瀏覽代碼

TimeZoneInfo: disable DST if no adjustment rules are given.

Adam Brengesjö 13 年之前
父節點
當前提交
8a79da4434
共有 1 個文件被更改,包括 11 次插入7 次删除
  1. 11 7
      mcs/class/System.Core/System/TimeZoneInfo.cs

+ 11 - 7
mcs/class/System.Core/System/TimeZoneInfo.cs

@@ -65,9 +65,9 @@ namespace System
 		string daylightDisplayName;
 		public string DaylightName {
 			get { 
-				if (disableDaylightSavingTime)
-					return String.Empty;
-				return daylightDisplayName; 
+				return supportsDaylightSavingTime
+					? daylightDisplayName
+					: string.Empty;
 			}
 		}
 
@@ -122,9 +122,9 @@ namespace System
 			get { return standardDisplayName; }
 		}
 
-		bool disableDaylightSavingTime;
+		bool supportsDaylightSavingTime;
 		public bool SupportsDaylightSavingTime {
-			get  { return !disableDaylightSavingTime; }
+			get  { return supportsDaylightSavingTime; }
 		}
 
 		static TimeZoneInfo utc;
@@ -543,7 +543,7 @@ namespace System
 
 		public AdjustmentRule [] GetAdjustmentRules ()
 		{
-			if (disableDaylightSavingTime)
+			if (!supportsDaylightSavingTime)
 				return new AdjustmentRule [0];
 			else
 				return (AdjustmentRule []) adjustmentRules.Clone ();
@@ -801,6 +801,8 @@ namespace System
 				throw new ArgumentException ("id parameter shouldn't be longer than 32 characters");
 #endif
 
+			bool supportsDaylightSavingTime = !disableDaylightSavingTime;
+
 			if (adjustmentRules != null && adjustmentRules.Length != 0) {
 				AdjustmentRule prev = null;
 				foreach (AdjustmentRule current in adjustmentRules) {
@@ -822,6 +824,8 @@ namespace System
 
 					prev = current;
 				}
+			} else {
+				supportsDaylightSavingTime = false;
 			}
 			
 			this.id = id;
@@ -829,7 +833,7 @@ namespace System
 			this.displayName = displayName ?? id;
 			this.standardDisplayName = standardDisplayName ?? id;
 			this.daylightDisplayName = daylightDisplayName;
-			this.disableDaylightSavingTime = disableDaylightSavingTime;
+			this.supportsDaylightSavingTime = supportsDaylightSavingTime;
 			this.adjustmentRules = adjustmentRules;
 		}