Ich möchte in Sekunden, Minuten, Stunden, Tage, Monate und Jahre von Datetime
erstellt werden.Rückkehr Monate und Tage von TimeSpan asp.net
schrieb ich dieses Code-Snippet
public static string ReturnCreatedSince(DateTime createdOn)
{
//Get current datetime
var today = DateTime.Now;
// Get days in current month
var daysInMonth = DateTime.DaysInMonth(today.Year, today.Month);
double seconds = 60;
double minutes = seconds * 60;
double hours = minutes * 60;
double days = hours * 24;
//double weeks = days * 7;
double months = days * daysInMonth;
double years = months * 12;
//Convert created datetime to seconds
var datetimeInSeconds = (today - createdOn).TotalSeconds;
var createdSince = string.Empty;
if (datetimeInSeconds <= seconds) //seconds between 1 to 60
{
return TimeSpan.FromSeconds(datetimeInSeconds).Seconds.ToString() + " sec";
}
else if (datetimeInSeconds <= minutes)// Minuites between 1 to 60
{
return TimeSpan.FromSeconds(datetimeInSeconds).Minutes.ToString() + " mins";
}
else if (datetimeInSeconds <= hours)// Hours between 1 to 24
{
return TimeSpan.FromSeconds(datetimeInSeconds).Hours.ToString() + " hrs";
}
else if (datetimeInSeconds <= days)// Days between 1 to 24
{
return TimeSpan.FromSeconds(datetimeInSeconds).Days.ToString() + " jrs";
}
else if (datetimeInSeconds <= months)// Months between 1 to 24
{
return (datetimeInSeconds/months).ToString() + " m";
}
else if (datetimeInSeconds <= years)// Years between 1 to 12
{
return (datetimeInSeconds/years).ToString() + " yrs";
}
else
{
return createdOn.ToShortDateString();
}
}
I
Herausgegeben
Für eine gegebene Datumzeit
wenn die Anzahl der den Code mit den folgenden Werten getestet Sekunde ist kleiner als 60, dann sollte es den Wert zurückgeben in zweiter. , wenn die Anzahl der zweiten weniger größer 60 und kleiner als (60 * 60) Sekunden, dann sollten sie den Wert in Minuten zurückkehren, das gleiche für Stunden gelten, Tage Monate und Jahre
Jetzt habe ich dieses Datum "createdOn": "2017-10-16T14:41:16.557"
und Rückkehr 41 Tage statt 1 Monat erwartet.
wie kann ich es beheben
Warum ist es nicht korrekt? Haben Sie versucht, die Berechnung manuell durchzuführen? Welches Ergebnis erwartest du? – Pac0
das macht für mich keinen Sinn: 'doppelte Sekunden = 60; double minutes = seconds * 60; ': so enthält die Variable' minutes' 3600. Willst du das? Dann denke ich, es ist keine Anzahl von Minuten (was der Variablenname für jemanden wie mich bedeuten würde, der Ihren Code liest). Gleiche Bemerkung für die nächsten Variablen. – Pac0
Was ist los? Sie möchten 38 Tage statt 1 Monat? Dann sind deine 'if'-Bedingungen falsch. –