2016-07-25 5 views
0

Ich entwickle Windows Forms-Anwendung und muss datetime Liniendiagramm mit Echtzeitdaten für jede Sekunde anzeigen.Zeitspanne zum Datetime-Konvertierungsformat Problem zur Anzeige von DateTime-Diagramm

Ich muss die Uhrzeit auf der x-Achse im Format (Tage: Stunden: Min: Sek) anzeigen. Die Zeit sollte 00: 00: 00: 00, 00: 00: 00: 01, 00: 00: 00: 02 usw. sein.

Ich nehme die erste Antwortzeit (Systemzeit) als Referenzzeit date1. Wieder nach 1 Sekunde, Anfrage senden, Antwort bekommen, Systemzeit als Datum2 erfassen und so fortfahren. Ich erhalte Antwortzeitspanne, indem ich Datum2 und Datum1 subtrahiere.

Aber für Datum/Uhrzeit-Diagramm akzeptiert die X-Achse nur die Datetime-Variable und muss unter Verwendung von ToOADate() in Double konvertiert werden.

Problem: Während Zeitspanne Umwandlung 00: 00: 06.2867597 zu Datumzeit variable ist als 2016.07.25 12.00.06 umwandelt. Aber ich brauche den Fomat 00:00:06 statt 12:00:06.

Dann nur mit ToOADate(), bekomme ich den richtigen doppelten Wert. Bitte lösen Sie mein Problem.

Hier ist mein Code:

DateTime date1 = DateTime.Now; // {7/25/2016 8:13:29 PM} 

DateTime date2 = DateTime.Now; // {7/25/2016 8:13:30 PM} 

TimeSpan time = date2 .Subtract(date1); // {00:00:01.3922821} 

DateTime logTime = Convert.ToDateTime(time.ToString()); // {7/25/2016 12:00:01 AM} 

Aber ich brauche sollte LOGTIME Wert "00.00.01" sein.

+1

DateTime behält kein Anzeigeformat bei. Nur es ist String-Darstellung. Verwenden Sie die Überladung "ToString", die einen Formatanbieter akzeptiert, um den DateTime-Wert wie gewünscht anzuzeigen. –

+1

Sind Sie sicher, dass Sie keine Zeit haben wollten.ToString()? Es sieht so aus, als ob Sie den Offset von einem Zeitpunkt zum anderen anzeigen und diesen nicht in eine DateTime konvertieren möchten. –

+0

Warum in eine DateTime einfügen? –

Antwort

0

Wenn Sie DateTime verwenden, wird es automatisch als DateTime-Format Ihres Systems angezeigt. Sie haben es als String für Wunsch Ausgabe

string logTime = Convert.ToDateTime(time.ToString()).ToString("MM/dd/yyyy HH:mm:ss"); 

wenn Sie nur Zeit Teil wollen auf diese Weise nehmen dann

string logTime = Convert.ToDateTime(time.ToString()).ToString("HH:mm:ss"); 
+0

ToOADate() konvertiert den DaeTime-Wert in double. Also ich möchte kein String-Format. –

+0

, aber Sie können kein spezifisches Format erhalten, ohne es in eine Zeichenkette umzuwandeln, DateTime hat kein Format, das als Systemformat angezeigt wird, ändern Sie das Systemformat, dann werden Sie hier eine Änderung vornehmen – Mostafiz

0

Ihre anzuzeigen logTime als 24-Stunden-string:

logTime.ToString("HH:mm:ss"); 

Sie können den Wert für logTime DateTime nicht selbst so ändern, dass er 00:00:01 darstellt, da sie den gleichen Wert haben. Sie ändern nur die Anzeige.