2017-05-04 6 views
-2

Ich hatte Probleme mit der Zeit Subtraktion in C#.C# Zeit Subtraktion Problem

Zum Beispiel habe ich Timer auf 2017.04.05 23.56.27 starten und den Timer in 2017.05.05 00.10.27 enden, wenn ich dies subtrahieren es zeigt mir führen 23 Stunden.

Ich möchte, dass es genaue Zeit wie 14 Minuten zeigt. Ich teile meinen Code ebenfalls.

double rate1 = Convert.ToDouble(rate.Text); 
double value = rate1/3600; 
DateTime dt = DateTime.Parse(text3.Text); 
DateTime edt = DateTime.Parse(text5.Text); 
var res = dt.Subtract(edt).ToString().Replace('-', ' '); 
DateTime tt = Convert.ToDateTime(res); 
DateTime dt1 = DateTime.Parse(text4.Text); 
DateTime edt1 = DateTime.Parse(text6.Text); 
var res1 = dt.Subtract(edt1).ToString().Replace('-', ' '); 
double sec = TimeSpan.Parse(res).TotalSeconds; 
double sec1 = TimeSpan.Parse(res1).TotalSeconds; 
text7.Text = res.ToString(); 
text8.Text = res1.ToString(); 
+3

Es rückwärts ist, können Sie die Endzeit von der Startzeit subtrahieren. Und dann ignorierte ich den Fehler, indem ich Code hinzufügte, um das Minuszeichen loszuwerden. Fange an, das richtig zu machen, um irgendwohin zu kommen. –

+0

Was ist die genaue Ausgabe, die Sie wollen? Das ist überhaupt nicht klar –

+0

Überprüfen Sie Ihr Datumsformat. Es ist MM/TT/JJJJ. Ihre Daten sind in verschiedenen Monaten, so dass die Antwort, die Sie erhalten, korrekt ist. – FortyTwo

Antwort

3

Es scheint, als ob Sie eine Menge Code zeigen, der für uns schwer zu reproduzieren ist, und die Variablennamen sind nicht die klarsten. Ich nehme an, dt steht für "datetime" und edt steht für "end datetime". Wenn das korrekt ist, subtrahieren Sie das Enddatum vom Startdatum und nicht umgekehrt (Sie sollten das kleinere vom größeren abziehen).

So, hier ist, wie man den Unterschied zwischen Start zu bekommen und Ende (Ich verwende Hindi Kultur-Info für diese):

var dateFormatCulture = new CultureInfo("hi-IN"); 
    var startDate = DateTime.Parse("4/5/2017 11:56:27 PM", dateFormatCulture); 
    var endDate = DateTime.Parse("5/5/2017 12:10:27 AM", dateFormatCulture); 
    var difference = endDate.Subtract(startDate); 

Sie sagen, Sie wollen „die genaue Zeit wie 14 Minuten“. Ich bin mir nicht sicher, ob das bedeutet, dass Sie den Rest der Werte nicht anzeigen möchten, aber hier sind einige Möglichkeiten, wie Sie sie anzeigen können.

Beachten Sie, dass es einen Unterschied zwischen dem zweiten und dritten Beispiel in den Methoden gibt, die aufgerufen werden, um die Minuten anzuzeigen. Minutes zeigt nur den Minutenanteil des Unterschieds an. TotalMinutes zeigt den gesamten Unterschied in Minuten an. In Ihrem Fall sind sie gleich, aber wenn der Unterschied 1 Stunde und 14 Minuten wäre, wäre Minutes immer noch 14, aber TotalMinutes wäre 74.

Die Ausgabe sieht so aus:

enter image description here

+0

Ich denke, ein Teil des Problems ist, dass wir en-US locale verwenden und er könnte etwas anderes verwenden, so dass es unklar ist, was er sucht –

+0

Dank @JoePhillips. Aktualisiert mit Hindi-Kultur Info, die 'tt/mm/jjjj' ist –

+0

Das sieht viel besser aus und entspricht dem, was er jetzt fragt :) –

0

Es sieht so aus, als ob Sie einen Kopier-/Einfügefehler haben könnten. In dieser Zeile haben Sie gemeint, dt1 statt dt zu referenzieren?