Comment Calculer le Temps Relatif
en C#
Lorsque vous travaillez avec des dates et des heures en C#, vous pourriez avoir besoin d’exprimer combien de temps s’est écoulé depuis un certain événement. Cela peut améliorer l’expérience utilisateur en affichant le temps dans un format facilement compréhensible, tel que “il y a 2 heures” ou “il y a un mois”. Dans cet article, nous allons explorer comment mettre en œuvre cette fonctionnalité en utilisant les classes DateTime
et TimeSpan
en C#.
Le Concept de Temps Relatif
Le temps relatif se réfère à l’expression du temps écoulé depuis un certain événement en termes de langage facilement compréhensible. Au lieu d’afficher des horodatages exacts, afficher le temps comme “il y a 3 jours” ou “hier” facilite la compréhension du temps écoulé par les utilisateurs sans qu’ils n’aient à effectuer de calculs mentaux.
Implémenter le Temps Relatif en C#
Voici comment calculer le temps relatif en utilisant une valeur DateTime
en C# :
Étape 1 : Définir des Constantes pour les Intervalles de Temps
Tout d’abord, vous devez établir des constantes qui représentent divers intervalles de temps. Cela rend votre code plus propre et plus compréhensible.
const int SECONDE = 1;
const int MINUTE = 60 * SECONDE;
const int HEURE = 60 * MINUTE;
const int JOUR = 24 * HEURE;
const int MOIS = 30 * JOUR;
Étape 2 : Calculer le TimeSpan
Pour déterminer combien de temps s’est écoulé, calculez le TimeSpan
entre l’heure actuelle et la DateTime
donnée.
var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);
double delta = Math.Abs(ts.TotalSeconds);
Étape 3 : Déterminer le Format de Temps Approprié
Avec le TimeSpan
calculé, vous pouvez maintenant déterminer comment formater le temps relatif en utilisant des instructions conditionnelles.
Voici comment vous pouvez retourner la chaîne appropriée en fonction des différents intervalles :
if (delta < 1 * MINUTE)
return ts.Seconds == 1 ? "une seconde ago" : ts.Seconds + " secondes ago";
if (delta < 2 * MINUTE)
return "il y a une minute";
if (delta < 45 * MINUTE)
return ts.Minutes + " minutes ago";
if (delta < 90 * MINUTE)
return "il y a une heure";
if (delta < 24 * HEURE)
return ts.Hours + " heures ago";
if (delta < 48 * HEURE)
return "hier";
if (delta < 30 * JOUR)
return ts.Days + " jours ago";
if (delta < 12 * MOIS)
{
int mois = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
return mois <= 1 ? "il y a un mois" : mois + " mois ago";
}
else
{
int années = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
return années <= 1 ? "il y a un an" : années + " années ago";
}
Réflexions Finales
Le code ci-dessus vous permet de calculer et d’afficher efficacement le temps relatif de manière simple. Lorsque vous l’implémentez dans votre application C#, vous pouvez améliorer son utilisation en rendant les références aux dates plus accessibles pour les utilisateurs.
Maintenant, vous êtes équipé d’une méthode pratique pour améliorer votre application avec des affichages de temps relatif. Bon codage !