GetAmbiguousTimeOffsets Method (DateTime)
Collapse the table of content
Expand the table of content

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.

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

public TimeSpan[] GetAmbiguousTimeOffsets(
	DateTime dateTime
)

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.

ExceptionCondition
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

TimeZoneInfo.Local

DateTimeKind.Local or DateTimeKind.Unspecified

Returns ambiguous time offsets for dateTime.

TimeZoneInfo.Local

DateTimeKind.Utc

Converts dateTime to the local time, and then returns ambiguous time offsets for that time.

TimeZoneInfo.Utc

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.

DateTimeKind.Unspecified

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
//


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2017 Microsoft