J'ai deux rendez-vous, un de moins que l'autre. Je veux créer une chaîne comme celle-ci
"0 jours, 0 heures, 23 minutes, 18 secondes"
représentant la différence entre les deux dates. Comment puis-je obtenir ces éléments de cette chaîne?
TimeSpan est l'objet dont vous avez besoin:
TimeSpan span = (DateTime.Now - DateTime.Now);
String.Format("{0} days, {1} hours, {2} minutes, {3} seconds",
span.Days, span.Hours, span.Minutes, span.Seconds);
Lorsque vous soustrayez une DateTime
d'une autre, vous obtenez une instance TimeSpan
, qui expose ces valeurs.
TimeSpan diff = DateTime.Now - DateTime.Today;
string formatted = string.Format(
CultureInfo.CurrentCulture,
"{0} days, {1} hours, {2} minutes, {3} seconds",
diff.Days,
diff.Hours,
diff.Minutes,
diff.Seconds);
Utilisez un TimeSpan
DateTime startTime = DateTime.Now;
DateTime endTime = DateTime.Now.AddSeconds( 75 );
TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
Console.WriteLine( "Time Difference (hours): " + span.Hours );
Console.WriteLine( "Time Difference (days): " + span.Days );
String yourString = string.Format("{0} days, {1} hours, {2} minues, {3} seconds",
span.Days, span.Hours, span.Minutes, span.Seconds);
Utilisez la classe TimeSpan , que vous obtiendrez en soustrayant les dates.
Vous pouvez formater la sortie à l'aide de chaînes de format standard ou custom .
"0 jours, 0 heures, 23 minutes, 18 secondes"
peut être obtenu avec quelque chose comme:
TimeSpan ts = DateTime.Now - DateTime.Today;
Console.WriteLine(
string.Format("{0:%d} days, {0:%h} hours, {0:%m} minutes, {0:%s} seconds", ts)
);
OMI, c'est plus propre et plus facile à utiliser string.Format
au lieu d'avoir à échapper les mots de votre chaîne de format (dont vous auriez besoin si vous venez d'utiliser .ToString
) ou le construire manuellement.
N'oubliez pas que si vous voulez que ce calcul soit portable, vous devez le stocker en UTC, puis lorsque vous l'affichez, le convertir en heure locale. En règle générale, enregistrez les dates au format UTC et convertissez-les en heure locale pour la présentation.
Avez-vous essayé d'utiliser
TimeSpan()
qui peut certainement faire ce que vous voulez
Que diriez-vous quelque chose comme ça?
TimeSpan diff = dateTimeNew - dateTimeOld;
string output = string.Format("{0} days, {1} hours, {2} minues, {3} seconds", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
Console.WriteLine(output);
DateTime myDay = DateTime.Now;
DateTime otherDate = DateTime.Now.AddYears(1);
var test = otherDate.Subtract(myDay);
Console.WriteLine("Days:" + test.Days + "Hours:" + test.Hours +"Minutes" + test.Minutes +"Seconds" + test.Seconds);
Ici le test est de type TimeStamp
TimeSpan diffTime = dateTimeNew -PreviousDate;
int days=diffTime.Days;
int hours=diffTime.Hours;
int minutes=diffTime.Minutes;
int seconds=diffTime.Seconds;