Wie man relative Zeit
in C# berechnet
Beim Arbeiten mit Daten und Zeiten in C# kann es notwendig sein, auszudrücken, wie viel Zeit seit einem bestimmten Ereignis vergangen ist. Dies kann die Benutzererfahrung verbessern, indem die Zeit in einem leicht verständlichen Format angezeigt wird, wie z. B. “vor 2 Stunden” oder “vor einem Monat”. In diesem Beitrag werden wir untersuchen, wie man diese Funktionalität mit den Klassen DateTime
und TimeSpan
in C# implementiert.
Das Konzept der relativen Zeit
Relative Zeit bezieht sich darauf, die seit einem bestimmten Ereignis vergangene Zeit in leicht verständlicher Sprache auszudrücken. Anstatt genaue Zeitstempel anzuzeigen, macht die Anzeige von Zeiten wie “vor 3 Tagen” oder “gestern” es einfacher für die Benutzer, die vergangene Zeit zu verstehen, ohne dass sie mentale Berechnungen anstellen müssen.
Implementierung relativer Zeit in C#
So berechnen Sie die relative Zeit mit einem DateTime
-Wert in C#:
Schritt 1: Konstanten für Zeitintervalle definieren
Zuerst müssen Sie Konstanten festlegen, die verschiedene Zeitintervalle repräsentieren. Dies macht Ihren Code übersichtlicher und verständlicher.
const int SEKUNDE = 1;
const int MINUTE = 60 * SEKUNDE;
const int STUNDE = 60 * MINUTE;
const int TAG = 24 * STUNDE;
const int MONAT = 30 * TAG;
Schritt 2: Berechnung des TimeSpan
Um zu bestimmen, wie viel Zeit vergangen ist, berechnen Sie den TimeSpan
zwischen der aktuellen Zeit und dem gegebenen DateTime
.
var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);
double delta = Math.Abs(ts.TotalSeconds);
Schritt 3: Bestimmen Sie das geeignete Zeitformat
Mit dem berechneten TimeSpan
können Sie nun bestimmen, wie Sie die relative Zeit formatieren, indem Sie bedingte Anweisungen verwenden.
Hier ist, wie Sie den entsprechenden String basierend auf verschiedenen Intervallen zurückgeben können:
if (delta < 1 * MINUTE)
return ts.Seconds == 1 ? "vor einer Sekunde" : "vor " + ts.Seconds + " Sekunden";
if (delta < 2 * MINUTE)
return "vor einer Minute";
if (delta < 45 * MINUTE)
return "vor " + ts.Minutes + " Minuten";
if (delta < 90 * MINUTE)
return "vor einer Stunde";
if (delta < 24 * STUNDE)
return "vor " + ts.Hours + " Stunden";
if (delta < 48 * STUNDE)
return "gestern";
if (delta < 30 * TAG)
return "vor " + ts.Days + " Tagen";
if (delta < 12 * MONAT)
{
int monate = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
return monate <= 1 ? "vor einem Monat" : "vor " + monate + " Monaten";
}
else
{
int jahre = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
return jahre <= 1 ? "vor einem Jahr" : "vor " + jahre + " Jahren";
}
Abschließende Gedanken
Der obige Code-Schnipsel ermöglicht es Ihnen, die relative Zeit effektiv zu berechnen und in unkomplizierter Weise anzuzeigen. Wenn Sie dies in Ihrer C#-Anwendung implementieren, können Sie die Benutzbarkeit verbessern, indem Sie Datumsreferenzen für die Benutzer nachvollziehbarer machen.
Jetzt sind Sie mit einem praktischen Weg ausgestattet, Ihre Anwendung mit relativen Zeitdarstellungen zu verbessern. Viel Spaß beim Programmieren!