Die Verwendung Von String.Format auf ein TimeSpan-Ausgabe volle Sekunden ohne Millisekunden
Ich soll die Anzeige die verstrichene Zeit zwischen zwei Daten in einen string.
Sagen wir, ich habe folgenden code:
DateTime date1 = DateTime.Now();
System.Threading.Thread.Sleep(2500);
DateTime date2 = DateTime.Now();
TimeSpan elapsed = date2.substract(date1);
Console.WriteLine("> {0:hh:mm:ss}", elapsed);
Was ich erwarte:
> 00:00:03
Was ich bekomme:
> 00:00:02.5002500
Gibt es eine Möglichkeit, die Verwendung der String.Format-Funktion, um nur die Rückkehr volle Sekunden?
Ich habe auch versucht zu entfernen die Dezimalstellen mit:
elapsed = elapsed.Substract(TimeSpan.FromMiliseconds((double)Timespan.Miliseconds);
Aber das funktioniert auch nicht, da diese fruchtlos verstrichen ist.Millisekunden Renditen 500 als Integer.
InformationsquelleAutor der Frage Jürgen Steinblock | 2010-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die
zu
.Net 4 ermöglicht die Verwendung von benutzerdefinierten Formatzeichenfolgen, mit Timespan. Finden Sie eine komplette Referenz der verfügbaren Formatbezeichner in der MSDN Benutzerdefinierte Zeitspanne Format-Strings Seite.
Müssen Sie die Flucht der ": "- Zeichen mit "\" (die sich maskiert werden müssen, es sei denn, Sie verwenden eine Zeichenkette).
Dieser Auszug aus der MSDN - Benutzerdefinierte Zeitspanne Format-Strings Seite erklärt, über die Flucht vor dem ":" und ". " - Zeichen in einem Formatstring:
InformationsquelleAutor der Antwort Doctor Jones
Leider ist es nicht möglich zu formatieren
TimeSpan
in der gleichen Weise wie eineDateTime
Wert. Aber Sie können tun, eine schnelle Umsetzung, weil beide TimeSpan und DateTime speichern Ihren Wert als Zecken (in denTicks
Eigenschaft).In Ihrem code, dass würde dann so Aussehen:
UPDATE: Dies gilt .NET 3.5 und früher, können .NET 4 unterstützt die Formatierung Zeitspannen.
InformationsquelleAutor der Antwort Marnix van Valen
Den
TimeSpan
KlasseHours
Minutes
undSeconds
Eigenschaften, die jedes Teil einzeln. So könnte man versuchen:Bekommen Sie das gewünschte format.
Kann es eine weitere optimale Möglichkeit, aber ich habe diese noch nicht gefunden haben.
InformationsquelleAutor der Antwort Dr Herbie
Nach einem Blick auf ein paar Möglichkeiten, dies zu tun, ich bin leider verlassen eine hässliche Antwort. Sie können nicht wirklich "Tickt", als es nicht wieder das format richtig, aber die folgenden arbeiten:
InformationsquelleAutor der Antwort Kyle Rozendo
Hmm, das ist böse (wie sich herausstellt) - mindestens vor .NET 4.0
Wenn Sie hier gehen: http://msdn.microsoft.com/en-us/library/1ecy8h51(v=VS.90).aspx es wird Ihnen sagen, dass es gibt keine format-überlastung für eine Zeitspanne an, und Sie haben zu tun Sie es von hand, z.B.:
Dies scheint - zumindest aus der Dokumentation - behoben sein .NET 4.0
InformationsquelleAutor der Antwort Murph
können Sie dies tun:
InformationsquelleAutor der Antwort karahan celikel
Gibt es folgende benutzerdefinierte Formatbezeichner " y (Jahr), M (Monat), d (Tag), h (Stunde 12), H (Stunde 24), m (minute), s (Sekunde), f (zweite Fraktion), F (zweite Fraktion, nachfolgende Nullen werden abgeschnitten), t (P. M oder A. M) und z (Zeitzone).
Folgenden Beispiele veranschaulichen, wie sind die format-Spezifizierer neu geschrieben, um die Ausgabe.
[C#]
InformationsquelleAutor der Antwort Eploo