English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# include la struttura DateTime per gestire date e orari.
Per utilizzare data e ora in C#, crea un oggetto della struttura DateTime utilizzando la parola chiave new. Di seguito, crea un oggetto DateTime con valore predefinito.
DateTime dt = new DateTime(); // Assegna valore predefinito 01/01/0001 00:00:00
Il valore predefinito e il valore minimo di un oggetto DateTime sono 01/01/0001 00:00:00 (mezzanotte). Il valore massimo può essere 31/12/9999 23:59:59
Utilizza diversi costruttori della struttura DateTime per assegnare un valore iniziale agli oggetti DateTime.
// Assegna valore predefinito 01/01/0001 00:00:00 DateTime dt1 = new DateTime(); // Assegna anno, mese, giorno DateTime dt2 = new DateTime(2015, 12, 31); // Assegna anno, mese, giorno, ora, minuto, secondi DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20); // Assegna anno, mese, giorno, ora, minuto, secondi, timezone UTC DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 20, DateTimeKind.Utc);
Nell'esempio sopra, abbiamo specificato l'anno, il mese e il giorno nel costruttore. L'anno può essere tra 0001 e 9999, il mese tra 1 e 12, e la data tra 1 e 31. L'impostazione di qualsiasi altro valore fuori da questi limiti causerà un'eccezione in tempo di esecuzione.
DateTime dt = new DateTime(2015, 12, 32); // Elenca l'eccezione: il giorno è fuori dai limiti
Utilizza diversi costruttori DateTime per impostare data, ora, fuso orario, calendario e regionalizzazione.
Ticks è una data e ora rappresentata come il numero di intervallo di 100 nanosecondi trascorsi dal 00:00:00.000 del 1° gennaio del calendario Gregoriano. Di seguito, inizializziamo l'oggetto DateTime utilizzando il numero di gradi.
DateTime dt = new DateTime(636370000000000000); DateTime.MinValue.Ticks; // Valore minimo di ticks DateTime.MaxValue.Ticks; // Valore massimo di ticks
La struttura DateTime include campi statici, proprietà e metodi. Esempio seguente dimostra i campi statici e le proprietà importanti.
DateTime currentDateTime = DateTime.Now; // Restituisce la data e l'ora corrente DateTime todaysDate = DateTime.Today; // Restituisce la data di oggi DateTime currentDateTimeUTC = DateTime.UtcNow; // Restituisce la data e l'ora corrente in UTC DateTime maxDateTimeValue = DateTime.MaxValue; // Restituisce il valore massimo di DateTime DateTime minDateTimeValue = DateTime.MinValue; // Restituisce il valore minimo di DateTime
TimeSpan è una struttura utilizzata per rappresentare il tempo in giorni, ore, minuti, secondi e millisecondi.
DateTime dt = new DateTime(2015, 12, 31); TimeSpan ts = new TimeSpan(25, 20, 55); DateTime newDate = dt.Add(ts); Console.WriteLine(newDate); // 1/1/2016 1:20:55 AM
La sottrazione di due date restituisce un TimeSpan.
DateTime dt1 = new DateTime(2015, 12, 31); DateTime dt2 = new DateTime(2016, 2, 2); TimeSpan result = dt2.Subtract(dt1); // 33.00:00:00
Sovraccarico degli operatori +, -, ==, !=, >, <, <=, >= per DateTime, semplifica l'addizione, sottrazione e confronto delle date. Questo ci rende facile gestire le date.
DateTime dt1 = new DateTime(2015, 12, 20); DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); TimeSpan time = new TimeSpan(10, 5, 25, 50); Console.WriteLine(dt2 + time); // 1/10/2017 10:36:10 Console.WriteLine(dt2 - dt1); //377.05:10:20 Console.WriteLine(dt1 == dt2); //False Console.WriteLine(dt1 != dt2); //True Console.WriteLine(dt1 > dt2); //False Console.WriteLine(dt1 < dt2); //True Console.WriteLine(dt1 >= dt2); //False Console.WriteLine(dt1 <= dt2); //True
La struttura DateTime contiene i seguenti metodi per convertire la data e l'ora in stringa.
Metodo | Descrizione |
---|---|
ToString | Convertire il valore DateTime in una stringa con formato specificato della regione. |
ToShortDateString | Convertire il valore DateTime in una stringa a breve data nel formato della regione (M/d/yyyy). |
ToShortTimeString | Convertire il valore DateTime in una stringa a breve ora nel formato della regione (h: mm: ss). |
ToLongDateString | Convertire il valore DateTime in una stringa a lunga data nel formato della regione (dddd, MMMM d, yyyy). |
ToLongTimeString | Convertire il valore DateTime in una stringa a lunga ora nel formato della regione (h:mm:ss tt). |
Esempio: come convertire DateTime in stringhe di formato diverso.
var dt = DateTime.Now; Console.WriteLine("Stringa di data corrente in cultura attuale: " + dt.ToString("d")); Console.WriteLine("MM/dd/yyyy Format: " + dt.ToString("MM/dd/yyyy")) Console.WriteLine("dddd, dd MMMM yyyy Format: " + dt.ToString("dddd, dd MMMM yyyy")); Console.WriteLine("MM/dd/yyyy h:mm tt Format: " + dt.ToString("MM/dd/yyyy h:mm tt")); Console.WriteLine("MMMM dd Format: " + dt.ToString("MMMM dd")); Console.WriteLine("HH:mm:ss Format: " + dt.ToString("HH:mm:ss")); Console.WriteLine("hh:mm tt Format: " + dt.ToString("hh:mm tt")); Console.WriteLine("Short Date String: " + dt.ToShortDateString()); Console.WriteLine("Long Date String: " + dt.ToLongDateString()); Console.WriteLine("Short Time String: " + dt.ToShortTimeString()); Console.WriteLine("Long Time String: " + dt.ToLongTimeString());
I metodi Parse (), ParseExact (), TryParse () e TryParseExact () possono essere utilizzati per convertire una stringa di data e ora valida in un oggetto DateTime.
Se la stringa specificata non è una rappresentazione valida di data e ora, i metodi Parse () e ParseExact () sollevano un'eccezione. Pertanto, si consiglia di utilizzare i metodi TryParse () o TryParseExact (), poiché se la stringa non è valida, restituiscono false.
var str = "5/12/2020"; DateTime dt; var isValidDate = DateTime.TryParse(str, out dt); if(isValidDate) Console.WriteLine(dt); else Console.WriteLine($"{str} non è una stringa di data valida");