TimeZoneInfo.GetAmbiguousTimeOffsets Метод

Определение

Возвращает сведения о возможных датах и времени, с которыми можно сопоставить неоднозначные значения этих величин.Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

Перегрузки

GetAmbiguousTimeOffsets(DateTime)

Возвращает сведения о возможных датах и времени, с которыми можно сопоставить неоднозначные значения этих величин.Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

GetAmbiguousTimeOffsets(DateTimeOffset)

Возвращает сведения о возможных датах и времени, с которыми можно сопоставить неоднозначные значения этих величин.Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

GetAmbiguousTimeOffsets(DateTime)

Возвращает сведения о возможных датах и времени, с которыми можно сопоставить неоднозначные значения этих величин.Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

public:
 cli::array <TimeSpan> ^ GetAmbiguousTimeOffsets(DateTime dateTime);
public TimeSpan[] GetAmbiguousTimeOffsets (DateTime dateTime);
member this.GetAmbiguousTimeOffsets : DateTime -> TimeSpan[]

Параметры

dateTime
DateTime

Дата и время.A date and time.

Возвращаемое значение

Массив объектов, представляющий возможные смещения относительно времени UTC, которым может соответствовать определенная дата и время.An array of objects that represents possible Coordinated Universal Time (UTC) offsets that a particular date and time can be mapped to.

Исключения

Параметр dateTime не является неоднозначным временем.dateTime is not an ambiguous time.

Примеры

В следующем примере определяется метод с именем ShowPossibleUtcTimes, который использует метод GetAmbiguousTimeOffsets(DateTime) для согласования неоднозначного времени со своим возможным временем в формате UTC.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(DateTime ambiguousTime, TimeZoneInfo timeZone)
{
   // Determine if time is ambiguous in target time zone
   if (! timeZone.IsAmbiguousTime(ambiguousTime))
   {
      Console.WriteLine("{0} is not ambiguous in time zone {1}.", 
                        ambiguousTime, 
                        timeZone.DisplayName);
   }
   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;

      Console.WriteLine("{0} {1} maps to the following possible times:", 
                        ambiguousTime, originalTimeZoneName);
      // Get ambiguous offsets 
      TimeSpan[] offsets = timeZone.GetAmbiguousTimeOffsets(ambiguousTime);
      // Handle times not in time zone of timeZone argument
      // Local time where timeZone is not local zone
      if ((ambiguousTime.Kind == DateTimeKind.Local) && ! timeZone.Equals(TimeZoneInfo.Local)) 
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone);
      // UTC time where timeZone is not UTC zone   
      else if ((ambiguousTime.Kind == DateTimeKind.Utc) && ! timeZone.Equals(TimeZoneInfo.Utc))
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone);

      // Display each offset and its mapping to UTC
      foreach (TimeSpan offset in offsets)
      {
         if (offset.Equals(timeZone.BaseUtcOffset))
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset);
         else
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset);
      }
   }            
}
Private Sub ShowPossibleUtcTimes(ambiguousTime As Date, timeZone As TimeZoneInfo)
   ' Determine if time is ambiguous in target time zone
   If Not timeZone.IsAmbiguousTime(ambiguousTime) Then
      Console.WriteLine("{0} is not ambiguous in time zone {1}.", _
                        ambiguousTime, _
                        timeZone.DisplayName)
   Else
      ' Display time and its time zone (local, UTC, or indicated by timeZone argument)
      Dim originalTimeZoneName As String 
      If ambiguousTime.Kind = DateTimeKind.Utc Then
         originalTimeZoneName = "UTC"
      ElseIf ambiguousTime.Kind = DateTimeKind.Local Then
         originalTimeZoneName = "local time"
      Else
         originalTimeZoneName = timeZone.DisplayName
      End If      
      Console.WriteLine("{0} {1} maps to the following possible times:", _
                        ambiguousTime, originalTimeZoneName)
      ' Get ambiguous offsets 
      Dim offsets() As TimeSpan = timeZone.GetAmbiguousTimeOffsets(ambiguousTime)
      ' Handle times not in time zone of timeZone argument
      ' Local time where timeZone is not local zone
      If (ambiguousTime.Kind = DateTimeKind.Local) And Not timeZone.Equals(TimeZoneInfo.Local) Then
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone)
      ' UTC time where timeZone is not UTC zone   
      ElseIf (ambiguousTime.Kind = DateTimeKind.Utc) And Not timeZone.Equals(TimeZoneInfo.Utc) Then
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone)
      End If       
      ' Display each offset and its mapping to UTC
      For Each offset As TimeSpan In offsets
         If offset.Equals(timeZone.BaseUtcOffset) Then
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset)
         Else
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset)
         End If   
      Next
   End If            
End Sub

Затем метод можно вызвать с помощью следующего кода:The method can then be called using code such as the following:

Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 1, 0, 0), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Local), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 00, 00, 00, DateTimeKind.Local), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();                     
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
// 
// This example produces the following output if run in the Pacific time zone:
//
//    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//       
//    11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
//     
//    11/4/2007 12:00:00 AM local time maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//    
//    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//       
//    11/4/2007 7:00:00 AM UTC maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
ShowPossibleUtcTimes(#11/4/2007 1:00:00#, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 01, 00, 00, DateTimeKind.Local), _
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 00, 00, 00, DateTimeKind.Local), _
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()                     
ShowPossibleUtcTimes(New Date(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified), _
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc), _
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
' 
' This example produces the following output if run in the Pacific time zone:
'
'    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
'    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
'    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
' 
'    11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
' 
'    11/4/2007 12:00:00 AM local time maps to the following possible times:
'    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
'    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
' 
'    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
'    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
'    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
' 
'    11/4/2007 7:00:00 AM UTC maps to the following possible times:
'    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
'    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC

Комментарии

Точное поведение этого метода зависит от связи между свойством Kind и объектом TimeZoneInfo, как показано в следующей таблице.The precise behavior of this method depends on the relationship between the Kind property and the TimeZoneInfo object, as the following table shows.

Тип объекта TimeZoneInfoTimeZoneInfo object type Значение свойства KindKind property value ПоведениеBehavior
TimeZoneInfo.Local DateTimeKind.Local или DateTimeKind.UnspecifiedDateTimeKind.Local or DateTimeKind.Unspecified Возвращает неоднозначные смещения времени для dateTime.Returns ambiguous time offsets for dateTime.
TimeZoneInfo.Local DateTimeKind.Utc Преобразует dateTime в местное время, а затем возвращает неоднозначные смещения времени для этого времени.Converts dateTime to the local time, and then returns ambiguous time offsets for that time.
TimeZoneInfo.Utc Любое значение.Any value. Создает ArgumentException.Throws an ArgumentException.
Любой другой часовой пояс.Any other time zone. Local или DateTimeKind.UtcLocal or DateTimeKind.Utc Преобразует dateTime в указанный часовой пояс, а затем определяет, является ли это время неоднозначным.Converts dateTime to the specified time zone, and then determines whether that time is ambiguous.
Любой другой часовой пояс.Any other time zone. DateTimeKind.Unspecified Определяет, является ли dateTime неоднозначным в указанном часовом поясе.Determines whether dateTime is ambiguous in the specified time zone.

Порядок TimeSpan объектов в массиве, возвращаемом этим методом, не определен.The order of TimeSpan objects in the array returned by this method is undefined. Однако можно определить, какой элемент представляет смещение от стандартного времени часового пояса, сравнив его значение со свойством BaseUtcOffset часового пояса.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. Сведения о том, как сопоставить неоднозначное время со стандартным часовым поясом, см. в разделе как разрешить неоднозначные времена.To map an ambiguous time to a time zone's standard time, see How to: Resolve Ambiguous Times.

Дополнительно

GetAmbiguousTimeOffsets(DateTimeOffset)

Возвращает сведения о возможных датах и времени, с которыми можно сопоставить неоднозначные значения этих величин.Returns information about the possible dates and times that an ambiguous date and time can be mapped to.

public:
 cli::array <TimeSpan> ^ GetAmbiguousTimeOffsets(DateTimeOffset dateTimeOffset);
public TimeSpan[] GetAmbiguousTimeOffsets (DateTimeOffset dateTimeOffset);
member this.GetAmbiguousTimeOffsets : DateTimeOffset -> TimeSpan[]

Параметры

dateTimeOffset
DateTimeOffset

Дата и время.A date and time.

Возвращаемое значение

Массив объектов, представляющий возможные смещения относительно времени UTC, которым может соответствовать определенная дата и время.An array of objects that represents possible Coordinated Universal Time (UTC) offsets that a particular date and time can be mapped to.

Исключения

Параметр dateTimeOffset не является неоднозначным временем.dateTimeOffset is not an ambiguous time.

Комментарии

Точное поведение этого метода зависит от связи между свойством Offset параметра dateTimeOffset и объектом TimeZoneInfo.The precise behavior of this method depends on the relationship between the Offset property of the dateTimeOffset parameter and the TimeZoneInfo object. Если значение свойства Offset соответствует возможным смещениям текущего часового пояса относительно времени в формате UTC для этой даты и времени, метод возвращает возможные смещения.If the value of the Offset property corresponds to the current time zone's possible offsets from Coordinated Universal Time (UTC) for that date and time, the method returns the possible offsets. В противном случае он преобразует dateTimeOffset в время в текущем часовом поясе, а затем возвращает возможные смещения этой даты и времени.Otherwise, it converts dateTimeOffset to the time in the current time zone, and then returns the possible offsets of that date and time.

Порядок TimeSpan объектов в массиве, возвращаемом этим методом, не определен.The order of TimeSpan objects in the array returned by this method is undefined. Однако можно определить, какой элемент представляет смещение от стандартного времени часового пояса, сравнив его значение со свойством BaseUtcOffset часового пояса.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. Сведения о том, как сопоставить неоднозначное время со стандартным часовым поясом, см. в разделе как разрешить неоднозначные времена.To map an ambiguous time to a time zone's standard time, see How to: Resolve Ambiguous Times.

Дополнительно

Применяется к