Calcola la differenza tra due date in C#

Puneet Dobhal 12 ottobre 2023
  1. Calcola la differenza tra due date in C# utilizzando l’operatore -
  2. Calcola la differenza tra due date in C# utilizzando il metodo DateTime.Substract
Calcola la differenza tra due date in C#

In questo articolo, esploreremo vari metodi per calcolare la differenza tra due date in C#. Useremo la struttura DateTime per la rappresentazione della data e la struttura TimeSpan per memorizzare il risultato.

Useremo la seguente definizione di data, specificando un istante di data utilizzando il costruttore DateTime.

DateTime sample_date = new DateTime(2010, 6, 14);

Come puoi notare, gli elementi della data nella dichiarazione includono l’anno, il mese e il giorno.

Ora, diamo un’occhiata ai vari metodi per calcolare la differenza tra due giorni in termini di numero di giorni.

Calcola la differenza tra due date in C# utilizzando l’operatore -

La soluzione più semplice è sottrarre le due date utilizzando l’operatore -. Poiché gli oggetti hanno lo stesso tipo di dati DateTime, possono essere sottratti direttamente. Il codice seguente descrive questo metodo.

using System;
public class Sample {
  public static void Main() {
    DateTime date_1 = new DateTime(2019, 02, 12);
    DateTime date_2 = new DateTime(2020, 04, 10);

    /*Subtraction (minus) of same data types yields difference in days*/
    Console.WriteLine("Difference in days: " + (date_2 - date_1).Days);
  }
}

Produzione:

Difference in days : 423

Calcola la differenza tra due date in C# utilizzando il metodo DateTime.Substract

Il metodo DateTime.Subtract è un altro modo efficiente per ottenere questo risultato. Restituisce la differenza tra due date e il risultato può essere memorizzato nel tipo di dati TimeSpan.

using System;
public class Sample {
  public static void Main() {
    DateTime date_1 = new DateTime(2019, 02, 12);
    DateTime date_2 = new DateTime(2020, 04, 10);

    TimeSpan Diff_dates = date_2.Subtract(date_1);
    Console.WriteLine("Difference in days: " + Diff_dates.Days);
  }
}

Produzione:

Difference in days : 423

La struttura DateTime può essere utilizzata anche per specificare l’ora del giorno insieme alla data. In questo caso, mentre usi il metodo DateTime.Subtract, assicurati che le date siano negli stessi fusi orari. In caso contrario, il risultato includerà la differenza tra i fusi orari.

Inoltre, utilizzando il doppio set di proprietà della classe TimeSpan possiamo anche estrarre più informazioni se necessario. Come nel codice di esempio qui sotto, abbiamo utilizzato il prefisso Total - TotalDays, per ottenere il risultato in valori frazionari.

using System;
public class Sample {
  public static void Main() {
    /*Definations include time of day */
    DateTime date_1 = new DateTime(2019, 02, 12, 8, 0, 0);
    DateTime date_2 = new DateTime(2020, 04, 10, 12, 0, 0);

    TimeSpan Diff_dates = date_2.Subtract(date_1);
    Console.WriteLine("Difference in Days = " + Diff_dates.Days);
    Console.WriteLine("Exact timespan in Days = " + Diff_dates.TotalDays);
  }
}

Produzione:

Difference in Days = 423 Exact timespan in Days = 423.166666666667

Mentre si finalizza il metodo appropriato per il proprio utilizzo, notare che il metodo dell’operatore - non tiene conto del fattore del fuso orario delle date. Quindi, se le date che stai utilizzando specificano i fusi orari, il metodo DateTime.Subtract diventa la scelta più ovvia.

Articolo correlato - Csharp DateTime