2016-04-27 17 views
-1

Ich habe Probleme mit der Datetime-Berechnung - es ist eine, die mich immer erreicht! Ich bevorzuge Zahlen nicht Zeit!Hinzufügen von Datumsangaben (HH: MM) zusammen zu einem (HHHH: MM)?

So habe ich verschiedene Zellen mit Gesamtstunden in jeder Zelle. Am Ende der Zeile befindet sich die Spalte "Total Hours: Minutes", die diese Zellen zusammenfügt. Der Wert jeder Zelle ist eine Zeichenkette und muss daher zuerst in eine DateTime konvertiert werden.

Meine Frage ist, wie zur Hölle mache ich das? Hier sind ein paar Schnipsel von dem, was ich bisher habe:

string cellvalue = e.Data.GetData(typeof(string)) as string; 
Point cursorLocation = this.PointToClient(new Point(e.X, e.Y)); 

DataGridView.HitTestInfo hittest = dataGridView1.HitTest(cursorLocation.X, cursorLocation.Y); 
DateTime calc = DateTime.Parse((dataGridView1[hittest.ColumnIndex + 1, hittest.RowIndex].Value.ToString())); 
dataGridView1[dataGridView1.ColumnCount, hittest.RowIndex].Value = ?????? 

Irgendwelche Ideen?

+2

Versuchen Sie es mit TimeSpan. Datetime speichert Datum und Uhrzeit, TimeSpan enthält Zeitintervalle. –

+0

Ja, ich habe mir die Zeitspanne angesehen, aber den Zellenwert in eine Zeitspanne geparst? Funktioniert es? –

Antwort

4

Es sieht aus wie Sie stattdessen eine TimeSpan verwenden sollten, so dass Sie

TimeSpan calc = TimeSpan.Parse((dataGridView1[hittest.ColumnIndex + 1, hittest.RowIndex].Value.ToString())); 

Sie Timespans mit + hinzufügen können, verwenden würde.

eine Zeichenfolge zu formatieren totalhours darzustellen: Minuten, Sie

String.Format("{0}:{1}", Math.Floor(ts.TotalHours), ts.Minutes) 

(unter der Annahme, die Zeitspanne ist positiv) verwenden können.

+0

Gibt es sowieso, um diese Zeitspanne wieder in eine Kette von hhhh: mm umzuwandeln? Das Problem, das ich jetzt habe, ist, es wieder zu analysieren. Ich habe es geschafft, hh und hh.mm zu bekommen, aber dann in einer if-Anweisung, es ist throws und exception, weil ich dann versuche, es zu analysieren. Alles sehr nervig! Ich hasse es, mit der Zeit zu arbeiten :( –

+1

@Chris_livermore Ich habe meine Antwort aktualisiert, um einen Weg zu zeigen "hhhh: mm", wie Sie es sagen. –

+0

Vielen Dank wird dies morgen eingeben, glaube nicht, 8 Stunden Programmierung Heute hat es geholfen, hoffentlich werde ich morgen ein bisschen mehr wach sein, wenn ich das verdiene –

0

In den Zellen, in denen Sie "Gesamtstunden" haben, ist es ein String, ein Double, ein TimeSpan-Wert?

Es scheint mir, dass Sie DateTime nicht brauchen, konvertieren Sie einfach alle Ihre "TotalHours" in eine TimeSpan und fügen Sie die TimeSpans zusammen, was Sie in Ihrer Total Zelle zeigen, ist Ihre TimeSpan TotalHours.

Siehe TimeSpan Konstruktor, TotalHours und Add.

Verwandte Themen