Tipo di dati Date (Visual Basic)

Contiene valori a 64 bit (8 byte) conformi alle specifiche IEEE che rappresentano le date comprese tra l'1 gennaio dell'anno 0001 e il 31 dicembre dell'anno 9999 e le ore comprese tra le 00.00.00 (mezzanotte) e le 23.59.59.9999999. Ogni incremento rappresenta 100 nanosecondi di tempo trascorso dall'inizio del 1° gennaio dell'anno 1 del calendario gregoriano. Il valore massimo rappresenta 100 nanosecondi prima dell'inizio del 1° gennaio dell'anno 10000.

Osservazioni:

Usare il tipo di dati Date per contenere valori di data, di ora o entrambi.

Il valore predefinito di Date è 00.00.00 (mezzanotte) del 1° gennaio 0001.

È possibile ottenere la data e l'ora corrente dalla classe DateAndTime.

Requisiti di formato

È necessario racchiudere un valore letterale Date tra simboli di cancelletto (# #). Il valore della data deve essere specificato nel formato M/g/aaaa, ad esempio #5/31/1993#, oppure aaaa-MM-gg, ad esempio #1993-5-31#. Quando si specifica prima l'anno, è possibile usare le barre. Questo requisito è indipendente dalle impostazioni locali usate e dalle impostazioni relative al formato di data e ora del computer.

Il motivo di questa limitazione è che il significato del codice non deve mai cambiare a seconda delle impostazioni locali con cui l'applicazione viene eseguita. Si supponga di impostare come hardcoded il valore letterale Date#3/4/1998# per rappresentare la data del 4 marzo 1998. Se nelle impostazioni locali è definito il formato mm/gg/aaaa, la compilazione di 3/4/1998 viene eseguita nel modo desiderato. Si supponga però di distribuire l'applicazione in molti paesi/aree geografiche. Se nelle impostazioni locali è definito il formato gg/mm/aaaa, il valore letterale hardcoded verrà compilato come 3 aprile 1998. Se invece è definito il formato aaaa/mm/gg, il valore letterale non sarà valido (1998 aprile 0003) e verrà generato un errore del compilatore.

Soluzioni alternative

Per convertire un valore letterale Date nel formato delle impostazioni locali in uso o in un formato personalizzato, fornire il valore letterale alla funzione Format, specificando un formato di data predefinito o definito dall'utente. L'esempio seguente illustra questa operazione.

MsgBox("The formatted date is " & Format(#5/31/1993#, "dddd, d MMM yyyy"))

In alternativa, si può usare uno dei costruttori di overload della struttura DateTime per assemblare un valore di data e ora. L'esempio seguente crea un valore per rappresentare le ore 12.14 del 31 maggio 1993.

Dim dateInMay As New System.DateTime(1993, 5, 31, 12, 14, 0)

Formato dell'ora

È possibile specificare il valore dell'ora nel formato 12 o 24 ore, ad esempio #1:15:30 PM# o #13:15:30#. Tuttavia, se non si specificano i minuti o i secondi, è necessario indicare AM o PM.

Valori predefiniti di data e ora

Se non si include una data in un valore letterale di data/ora, Visual Basic imposta la parte del valore relativa alla data sul 1° gennaio 0001. Se non si include un'ora in un valore letterale di data/ora, Visual Basic imposta la parte del valore relativa all'ora sull'inizio della giornata, ossia mezzanotte (00.00.00).

Conversione di tipi

Se un valore Date viene convertito nel tipo String, Visual Basic esegue il rendering della data e dell'ora rispettivamente in base al formato breve e al formato 12 o 24 ore specificati nelle impostazioni locali di runtime.

suggerimenti per la programmazione

  • Considerazioni sull'interoperabilità. Se si prevede l'interazione con componenti non scritti per .NET Framework, ad esempio oggetti COM o di automazione, tenere presente che i tipi di data/ora in altri ambienti non sono compatibili con il tipo Date di Visual Basic. Se si passa un argomento di data/ora a un componente di questo tipo, nel nuovo codice Visual Basic è necessario dichiararlo come Double anziché come Date e usare i metodi di conversione DateTime.FromOADate e DateTime.ToOADate.

  • Caratteri tipo. Date non ha alcun carattere di tipo letterale o di tipo identificatore. Il compilatore considera tuttavia i valori letterali racchiusi tra simboli del cancelletto (# #) come valori Date.

  • Tipo di framework. Il tipo corrispondente in .NET Framework è la struttura System.DateTime.

Esempio

Una variabile o una costante del tipo di dati Date contiene sia la data che l'ora. Ciò è illustrato nell'esempio seguente.

Dim someDateAndTime As Date = #8/13/2002 12:14 PM#

Vedi anche