Réponses:
L'exemple suivant montre comment procéder:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
Lorsqu'il est exécuté, cela imprime "30" car il y a une différence de 30 minutes entre la date et l'heure.
Le résultat de DateTime.Subtract(DateTime x)
est un objet TimeSpan qui donne d'autres propriétés utiles.
TotalMinutes
! (not Minutes
)
Vous voulez la TimeSpan
structure:
TimeSpan diff = dateTime1 - dateTime2;
Un objet TimeSpan représente un intervalle de temps (durée ou temps écoulé) qui est mesuré comme un nombre positif ou négatif de jours, heures, minutes, secondes et fractions de seconde. La structure TimeSpan peut également être utilisée pour représenter l'heure du jour, mais uniquement si l'heure n'est pas liée à une date particulière.
Il existe différentes méthodes pour récupérer les jours, heures, minutes, secondes et millisecondes de cette structure.
Si vous êtes simplement intéressé par la différence, alors:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
vous donnera la différence positive entre les heures quelle que soit la commande.
Si vous venez d'obtenir le composant horaire mais que les heures peuvent être fractionnées avant minuit, vous devez ajouter 24 heures à l'intervalle pour obtenir la différence réelle:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
S'ils sont tous les deux des valeurs date-heure UTC, vous pouvez le faire TimeSpan diff = dateTime1 - dateTime2;
Sinon, vos chances d'obtenir la bonne réponse dans tous les cas possibles sont nulles.
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
private void button1_Click(object sender, EventArgs e)
{
TimeSpan timespan;
timespan = dateTimePicker2.Value - dateTimePicker1.Value;
int timeDifference = timespan.Days;
MessageBox.Show(timeDifference.ToString());
}
Vous pouvez utiliser de la manière suivante pour obtenir une différence entre deux objets Datetime. Supposons qu'il y ait des objets DateTime dt1 et dt2 puis le code.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. Voir: MSDN Custom TimeSpan Format