TimeZoneInfo.GetAmbiguousTimeOffsets Method (DateTime)

Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public TimeSpan[] GetAmbiguousTimeOffsets(
	DateTime 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.


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



DateTimeKind.Local or DateTimeKind.Unspecified

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.

Local or DateTimeKind.Utc

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}.",
                        timeZone.DisplayName) + "\n";
      // 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";
         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";
            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),
// 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


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.