English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Data e ora (DateTime)

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

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

Campi statici di DateTime

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

Intervallo di tempo (TimeSpan)

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

Operatore

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

Convertire DateTime in String

La struttura DateTime contiene i seguenti metodi per convertire la data e l'ora in stringa.

MetodoDescrizione
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());

Convertire la stringa in DateTime

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