web-dev-qa-db-fra.com

Comment obtenir la différence de temps entre deux objets DateTime en utilisant C #?

Comment obtenir la différence de temps entre deux objets DateTime à l'aide de C #?

138
TinTin

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

Une fois exécuté, cela affiche "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.

199
Daniel Renshaw

Vous voulez le TimeSpan struct:

TimeSpan diff = dateTime1 - dateTime2;

Un objet TimeSpan représente un intervalle de temps (durée ou temps écoulé) mesuré en 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 temps quelle que soit la commande.

Si vous venez de recevoir la composante heure mais que les heures peuvent être divisées avant minuit, vous devez ajouter 24 heures à la durée pour obtenir la différence réelle:

TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
    diff = diff + TimeSpan.FromDays(1);
}
55
ChrisF

Ce dont vous avez besoin, c'est d'utiliser la méthode Subtact) de la classe --- (DateTime , qui renvoie un TimeSpan .

var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));
26
Nate

La façon dont je le fais habituellement soustrait les deux DateTime et cela me donne un TimeSpan qui me dira le diff.

Voici un exemple:

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;
10
Darik

Si ce sont les deux valeurs date-heure UTC que vous pouvez utiliser TimeSpan diff = dateTime1 - dateTime2;

Sinon, votre chance d'obtenir la bonne réponse dans tous les cas possibles est égale à zéro.

4
Ian Mercer
 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);
3
Mukund

Vous devez utiliser un TimeSpan . Voici un exemple de code:

TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks);
2
Jason Webb
private void button1_Click(object sender, EventArgs e)
{
    TimeSpan timespan;
    timespan = dateTimePicker2.Value - dateTimePicker1.Value;
    int timeDifference = timespan.Days;
    MessageBox.Show(timeDifference.ToString());
}
2
Wong Lok Pan

Vous pouvez utiliser de la manière suivante pour obtenir une différence entre deux objets Datetime. Supposons qu'il existe des objets DateTime dt1 et dt2, puis le code.

TimeSpan diff = dt2.Subtract(dt1);
1
Sunny Sandeep