Nur neugierig, gibt es eine Formatzeichenfolge, mit der ich so etwas wie "5h 3m 30s" ausgeben kann?
z.B. (offensichtlich falsch)
myTimeSpan.ToString("hh mm ss")
Versuchen:
myTimeSpan.ToString("h'h 'm'm 's's'")
(Beachten Sie, dass sogar Leerzeichen in Anführungszeichen gesetzt werden müssen - das war bei meinem ersten Versuch falsch.)
Ich gehe natürlich davon aus, dass Sie .NET 4 verwenden - zuvor wurden TimeSpan
benutzerdefinierte Formatzeichenfolgen nicht unterstützt.
EDIT: Wie bereits erwähnt, funktioniert dies nicht länger als 24 Stunden. Beachten Sie auch, dass Alternativen auch über Noda Time verfügbar sind :)
Beachten Sie dies, wenn Sie die Antwort von Jon Skeet mit folgendem Code verwenden:
Sie erhalten Ergebnisse wie diese:
Das Stundenformat kann maximal 23 Stunden anzeigen. Es werden keine 27 Stunden angezeigt oder die 12 Tage in Stunden umgerechnet, sondern sie werden einfach abgeschnitten, als ob sie nie existiert hätten.
Eine Möglichkeit, dies zu beheben, besteht darin, eine Erweiterung zu erstellen, die die Länge der Zeitspanne überprüft und eine Formatierung basierend darauf erstellt, ob die Zeitspanne mehr als ein Jahr, einen Tag usw. beträgt. Oder Sie könnten einfach immer auch Tage zeigen, weil sie nie abschneiden:
Beachten Sie, dass ich ein Anfänger im Programmieren bin. Dies kommt erst von Beobachtungen, nachdem ich das Glück hatte, dies zu bemerken, nachdem ich angenommen hatte, dass es alle Stunden zeigen würde. Ich sage das, weil ich nicht weiß, ob es eine bessere Lösung gibt, wie ein anderes Stundenformat, das endlose Stunden anzeigen kann.
Ich denke jedoch, dass dieses Format seine beabsichtigte Funktionalität erfüllt. Man muss sich nur dessen bewusst sein. Also dieser Beitrag. Die Antwort von Jon Skeet zeigte nie an, dass dieses Format nur die Stundeigenschaft eines Datumsformats anzeigen soll, bei dem die Stunden höchstens 23 sein können.
quelle
TotalHours
etc in TimeSpan. Sie wollten das wahrscheinlichMath.Floor(span.TotalHours) + span.ToString("'h 'm'm 's's'")
Wenn Sie das Pech haben, .NET4 nicht zu verwenden:
quelle
TotalHours
auch in neueren Versionen von .net noch der richtige Weg.TotalHours
, da dies ein istdouble
, keinint
ähnlichesHours
ist, dh es werden Bruchteile von Stunden sowie ganze Stunden angezeigt.Wie wäre es mit einer Verdichtung?
UPDATE 1:
Sie können es mit einem einfachen Anführungszeichen entkommen:
h'h 'm'm 's's'
quelle
Hours
,Minutes
,Seconds
IMO Eigenschaften. Ich persönlich würde lieber eine benutzerdefinierte Formatzeichenfolge verwenden, nachdem ich das Zitat herausgefunden habe.Dieser kleine Code hilft beim Parsen und Zurückkehren:
Referenz für die Zeitspannenanalyse
quelle
Verwenden
Xamarin
und und.NET Portable 4.5
dies war das einzige Format, das ich zum Arbeiten bekam, nachdem ich alle anderen Antworten hier ausprobiert hatte:Im Wesentlichen setze ich die
:
in einfache Anführungszeichen, um ihnen zu entkommen.quelle
Ich finde Formatzeichenfolgen manchmal ein wenig wie reguläre Ausdrücke. Wenn ich später auf den Code zurückkomme, habe ich die Nuancen vergessen. Ich habe mich daher für Folgendes entschieden, was mir die Dokumentation weniger wahrscheinlich zurückschickt:
Die in C # 6 eingeführte String-Interpolation macht dies viel klarer als sonst.
quelle