Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo TimeZoneInfo.GetAmbiguousTimeOffsets (DateTime)

 

Data di pubblicazione: ottobre 2016

Restituisce le informazioni sulle possibili date e ore alle quali possono essere mappate una data e un'ora ambigue.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public TimeSpan[] GetAmbiguousTimeOffsets(
	DateTime dateTime
)

Parametri

dateTime
Type: System.DateTime

Data e ora.

Valore restituito

Type: System.TimeSpan[]

Matrice di oggetti che rappresenta possibili offset UTC (Coordinated Universal Time) a cui è possibile mappare una data e un'ora particolari.

Exception Condition
ArgumentException

dateTime non è un'ora ambigua.

Il comportamento preciso di questo metodo dipende dalla relazione tra il Kind proprietà e TimeZoneInfo oggetto, come illustrato nella tabella seguente.

Tipo oggetto TimeZoneInfo

Valore della proprietà Kind

Comportamento

TimeZoneInfo.Local

DateTimeKind.Local o DateTimeKind.Unspecified

Ora ambigua restituisce gli offset per dateTime.

TimeZoneInfo.Local

DateTimeKind.Utc

Converte dateTime in ora locale e quindi restituisce ora ambigua degli offset per tale intervallo di tempo.

TimeZoneInfo.Utc

Qualsiasi valore.

Genera un ArgumentException.

Qualsiasi altro fuso orario.

Local o DateTimeKind.Utc

Converte dateTime per il fuso orario specificato e determina quindi se tale ora è ambigua.

Qualsiasi altro fuso orario.

DateTimeKind.Unspecified

Determina se dateTime è ambiguo nel fuso orario specificato.

L'ordine di TimeSpan oggetti nella matrice restituita da questo metodo non è definito. Tuttavia, è possibile determinare quale elemento rappresenta un offset dall'ora solare del fuso orario confrontando il valore con il fuso orario BaseUtcOffset proprietà. Per eseguire il mapping di un'ora ambigua all'ora solare del fuso orario, vedere Procedura: risolvere orari ambigui.

Note per i chiamanti:

In Windows XP sistemi, questo metodo si applica solo alla regola di rettifica corrente per determinare se dateTime è ambiguo se l'istanza corrente è TimeZoneInfo.Local. Di conseguenza, il metodo potrebbe non segnalare con precisione gli offset ora ambigua per periodi precedenti la regola di rettifica corrente. Per ulteriori informazioni, vedere la sezione Note per i chiamanti nel Local proprietà.

L'esempio seguente definisce un metodo denominato ShowPossibleUtcTimes che utilizza il GetAmbiguousTimeOffsets(DateTime) metodo per eseguire il mapping di un'ora ambigua alle possibili ore UTC (Coordinated Universal Coordinated Time) corrispondente.

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);
      }
   }            
}

Il metodo può quindi essere chiamato utilizzando codice analogo al seguente:

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: