[C#] TimeSpan DateTime.Now - DatumAusDB formatieren?!


Bexx

Verrückte Erfinderin bei Daniel Düsentrieb
Moinsen,

ich bin fremd in der Sprache und möchte mit TimeSpan die vergangene Zeitspanne eines mir bekannten Datums aus der DB und dem jetztigen Zeitpunkt ermitteln.
So lautet mein Ergebnis: "TotalDays = 581.23067962818288".

Ihr werdet sicher verstehen warum ich das nicht sehr human readable empfinde...
Wie formatiert man das, ich will nur die gerade Anzahl an Tagen, Stunden & Minuten haben.

Danke,
Becci
 

Spyke

Premium-User
Einfach die Eigenschaften Days, Hours, Minutes abfragen.
Die sollten eigentlich das liefern was du willst.
 

raruk

Grünschnabel
Ansonsten, wenn du mit deiner Variable arbeiten willst kannst sie beim "." splitten:
string[] splitted = TotalDays.Split(new Char[]{'.'});
splitted[1] enthält somit "581"
splitted[2] enthält "23067962818288"

581(splitted[1]) entspricht ja nun den gesamten Tagen.
Nun gehts folgendermassen weiter:

string strHours= "";
double hours = 0;

strHours = "0."+splitted[2];
hours = Convert.ToDouble(strHours) * 24;
//nun steht in hours 5.53631107638912

string[] splittedHours = hours.ToString().Split(new Char[]{'.'});
// splittedHours[1] enthält "5" was den gesamten Stunden entspricht
// splittedHours[2] enthält "53631107638912"

string strMin="";
double mins = 0;

strMin = "0." + splittedHours[2];
mins = Convert.ToDouble(strMin) * 60;
// mins enthält 32.1786645833472

string[] splittedMin = mins.ToString().Split(new Char[]{'.'});
// splittedMin[1] enthält "32" was den gesamten Minuten entspricht
// splittedMin[2] enthält "1786645833472"

Hoffe es entspricht deiner Vorstellung.

Gruss raruk
 
Zuletzt bearbeitet:

ademo

Mitglied
Ich glaube ihr sucht zui weit die .ToString() methode bringt doch schon alles mit.
Code:
            DateTime dbvalue = new DateTime(2014, 07, 10);

            TimeSpan ts = DateTime.Now - dbvalue;

            string s = ts.ToString(@"hh\:mm");