Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo DateTime.ToBinary

Serializza l'oggetto DateTime corrente in un valore binario a 64 bit che può essere quindi utilizzato per ricreare l'oggetto DateTime.

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

public long ToBinary()

Valore restituito

Tipo: System.Int64
Un valore intero con segno a 64 bit che codifica le proprietà Kind e Ticks.

Utilizzare il metodo ToBinary per convertire il valore dell'oggetto DateTime corrente in un valore binario. Successivamente, utilizzare il valore binario e il metodo FromBinary per ricreare l'oggetto DateTime originale.

Nota importanteImportante

In alcuni casi, il valore DateTime restituito dal metodo FromBinary non è identico al valore DateTime originale fornito al metodo ToBinary. Per ulteriori informazioni, vedere la sezione successiva, "Regolazione ora locale".

Regolazione dell'ora locale

Un'ora locale, ovvero un'ora UTC (Coordinated Universal Time) regolata in base al fuso orario locale, è rappresentata da una struttura DateTime la cui proprietà Kind ha il valore Local. Quando si ripristina un valore DateTime locale dalla rappresentazione binaria prodotta dal metodo ToBinary, il metodo FromBinary può regolare il valore ricreato in modo che non sia uguale al valore originale. Ciò può verificarsi nelle seguenti condizioni:

  • Se un oggetto DateTime locale è serializzato in un fuso orario tramite il metodo ToBinary e deserializzato in un fuso orario differente tramite il metodo FromBinary, l'ora locale rappresentata dall'oggetto DateTime risultante viene automaticamente regolata in base al secondo fuso orario.

    Ad esempio, si consideri un oggetto DateTime che rappresenta le 15.00 ora locale. Un'applicazione che viene eseguita nel fuso Ora solare Pacifico (Stati Uniti) utilizza il metodo ToBinary per convertire tale oggetto DateTime ad un valore binario. Un'altra applicazione che esegue il fuso orario Orientale degli Stati Uniti utilizza il metodo FromBinary per convertire il valore binario in nuovo oggetto DateTime. Il valore del nuovo oggetto DateTime rappresenta le ore 18.00, ovvero lo stesso orario del valore originale (ovvero le 15.00) ma regolato sull'ora locale del fuso orario orientale.

  • Se la rappresentazione binaria di un valore DateTime locale rappresenta un'ora non valida nel fuso orario locale del sistema sul quale viene chiamato FromBinary, l'ora viene regolata in modo che sia valida.

    Ad esempio, la transizione da ora standard a ora legale nel fuso orario degli Stati Uniti della costa pacifica (ora solare) si verifica il 14 marzo, 2010, alle 2:00 AM, quando l'orario si anticipa di un'ora, alle 3:00 AM. Questo intervallo orario rappresenta un orario non valido, ovvero un intervallo di tempo che non esiste in questo fuso orario. Nell'esempio riportato di seguito viene illustrato che quando un'ora che rientra in questo intervallo viene convertita in un valore binario dal metodo ToBinary e viene ripristinata dal metodo FromBinary, il valore originale è regolato per diventare un'ora valida. È possibile determinare se un particolare valore della data e dell'ora può essere soggetto a modifica passandolo al metodo TimeZoneInfo.IsInvalidTime, come illustra l'esempio.

    
    using System;
    
    public class Example
    {
       public static void Main()
       {
          DateTime localDate = new DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local);
          long binLocal = localDate.ToBinary();
          if (TimeZoneInfo.Local.IsInvalidTime(localDate))
             Console.WriteLine("{0} is an invalid time in the {1} zone.", 
                               localDate, 
                               TimeZoneInfo.Local.StandardName);
    
          DateTime localDate2 = DateTime.FromBinary(binLocal);
          Console.WriteLine("{0} = {1}: {2}", 
                            localDate, localDate2, localDate.Equals(localDate2));
       }
    }
    // The example displays the following output:
    //    3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone.
    //    3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: False
    
    
    

Considerazioni sulle versioni

A partire dalla versione 2.0 di .NET Framework, le strutture DateTime sono costituite da due campi privati: il campo Kind, che indica se il valore dell'ora specificata si basa sull'ora locale, sull'ora UTC (Coordinated Universal Time) o su nessuna delle due, e il campo Ticks, che contiene il numero di segni di graduazione (della durata di 100 nanosecondi) in cui si specificano una data e un'ora. Per accedere al campo Ticks è possibile utilizzare la proprietà Ticks, mentre per accedere al campo Kind è possibile utilizzare la proprietà Kind.

Nelle versioni di .NET Framework precedenti alla 2.0, se si serializzava manualmente un oggetto DateTime anziché utilizzare un'interfaccia di serializzazione quale ad esempio System.Runtime.Serialization.ISerializable, era necessario serializzare soltanto i dati relativi al campo Ticks della struttura DateTime. A partire dalla versione 2.0 è necessario serializzare anche i dati relativi al campo Kind.

.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft