TimeZoneInfo.GetAmbiguousTimeOffsets Method (DateTime)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Returns information about the possible dates and times that an ambiguous date and time can be mapped to.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- dateTime
- Type: System.DateTime
A date and time.
Return Value
Type: System.TimeSpan []An array of TimeSpan objects that represents possible Coordinated Universal Time (UTC) offsets that a particular date and time can be mapped to.
| Exception | Condition |
|---|---|
| ArgumentException | dateTime is not an ambiguous time. |
The precise behavior of this method depends on the relationship between the Kind property and the TimeZoneInfo object, as the following table shows.
TimeZoneInfo object type | Kind property value | Behavior |
|---|---|---|
Returns ambiguous time offsets for dateTime. | ||
Converts dateTime to the local time, and then returns ambiguous time offsets for that time. | ||
Any value. | Throws an ArgumentException. | |
Any other time zone. | Converts dateTime to the specified time zone, and then determines whether that time is ambiguous. | |
Any other time zone. | Determines whether dateTime is ambiguous in the specified time zone. |
The order of TimeSpan objects in the array returned by this method is undefined. However, you can determine which element represents an offset from the time zone's standard time by comparing its value with the time zone's BaseUtcOffset property.
Version Notes
XNA Framework
When this method is used in the XNA Framework, it throws a NotSupportedException exception.The following example defines a method named ShowPossibleUtcTimes that uses the GetAmbiguousTimeOffsets(DateTime) method to map an ambiguous time to its possible corresponding Coordinated Universal Time (UTC) times.
private void ShowPossibleUtcTimes(System.Windows.Controls.TextBlock outputBlock, DateTime ambiguousTime, TimeZoneInfo timeZone) { // Determine if time is ambiguous in target time zone if (!timeZone.IsAmbiguousTime(ambiguousTime)) { outputBlock.Text += String.Format("{0} is not ambiguous in time zone {1}.", ambiguousTime, timeZone.DisplayName) + "\n"; } else { // Display time and its time zone (local, UTC, or indicated by timeZone argument) string originalTimeZoneName; if (ambiguousTime.Kind == DateTimeKind.Utc) originalTimeZoneName = "UTC"; else if (ambiguousTime.Kind == DateTimeKind.Local) originalTimeZoneName = "local time"; else originalTimeZoneName = timeZone.DisplayName; outputBlock.Text += String.Format("{0} {1} maps to the following possible times:", ambiguousTime, originalTimeZoneName) + "\n"; // Get ambiguous offsets TimeSpan[] offsets = timeZone.GetAmbiguousTimeOffsets(ambiguousTime); // Display each offset and its mapping to UTC foreach (TimeSpan offset in offsets) { if (offset.Equals(timeZone.BaseUtcOffset)) outputBlock.Text += String.Format("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset) + "\n"; else outputBlock.Text += String.Format("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset) + "\n"; } } }
The method can then be called using code such as the following:
ShowPossibleUtcTimes(outputBlock, new DateTime(2007, 11, 4, 1, 0, 0), TimeZoneInfo.Local); // // This example produces the following output if run in the Pacific time zone: // // 11/4/2007 1:00:00 AM (GMT-08:00) Pacific Time (US & Canada) maps to the following possible times: // If 11/4/2007 1:00:00 AM is Pacific Standard Time, 11/4/2007 9:00:00 AM UTC // If 11/4/2007 1:00:00 AM is Pacific Daylight Time, 11/4/2007 8:00:00 AM UTC //