Benutzer mit den meisten Antworten
DateTimePicker - Subtraktion von Differenz zweier DTP (Uhrzeit)

Frage
-
Hallo, ich habe ein Problem beim Berechnen meiner Zeiten.
Es besteht der DTP start, ende und Abzug.
Ich rechne also ende.value - start.value, was soweit auch funktioniert. Nur wenn ich jetzt meinen Abzug von der Differenz der DTP start und ende abziehen will, bekomm ich diese Fehlermeldung:
Error 1 Operator '-' cannot be applied to operands of type 'System.TimeSpan' and 'System.DateTime'
Ok, was ich jetzt nicht verstehe ist, dass ich zuvor doch schon "-" gerechnet habe.
Warum erweißt sich dann eine weitere Subtraktion einer vorher erechneten Zeit als Error?
Eventuell kann mir ja jemand weiter helfen, oder einen besseren Lösungsweg vorschlagen. Danke im Voraus!
- Bearbeitet xyfz Donnerstag, 28. März 2013 17:04
Antworten
-
Hallo,
wenn man 2 DateTime (Zeitpunkt) subtrahiert dann entsteht ein TimeSpan (Zeitspanne). Eine Möglichkeit wäre folgende:
DateTime start = new DateTime(1000); DateTime ende = new DateTime(100); DateTime abzug = new DateTime(500); TimeSpan s = (start - ende) - new TimeSpan(abzug.Ticks); Console.WriteLine(s.Ticks);
An sich kannst du auch noch etwas mit der Subtract und der Add...-Methode herum probieren. Bei einem DateTime kann man beispielsweise auch TiemSpans abziehen.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.- Als Antwort vorgeschlagen Palin Freitag, 29. März 2013 19:23
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Samstag, 30. März 2013 18:08
-
Hi xyfz,
beim DateTimePicker bekommst du ein Datum mit Uhrzeit zurück.
Da die nur die Zeit interessiert kannst du daraus deine Timespan erzeugen.
new TimeSpan(Stunden, Minuten, Sekunden)
MFG
Björn
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Samstag, 30. März 2013 18:08
-
Ok, hab es soweit hinbekommen. Ist zwar nicht sauber aber funktioniert.
(Start.Value - Ende.Value) - (Abzug.Value - Nichts)
So konnte er es rechnen. Nichts steht für einen DateTimePicker der ständig auf 00:00 steht und nicht sichtbar ist.
Danke euch trotzdem für die Antworten!
- Als Antwort markiert xyfz Freitag, 29. März 2013 19:16
Alle Antworten
-
Hallo,
wenn man 2 DateTime (Zeitpunkt) subtrahiert dann entsteht ein TimeSpan (Zeitspanne). Eine Möglichkeit wäre folgende:
DateTime start = new DateTime(1000); DateTime ende = new DateTime(100); DateTime abzug = new DateTime(500); TimeSpan s = (start - ende) - new TimeSpan(abzug.Ticks); Console.WriteLine(s.Ticks);
An sich kannst du auch noch etwas mit der Subtract und der Add...-Methode herum probieren. Bei einem DateTime kann man beispielsweise auch TiemSpans abziehen.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.- Als Antwort vorgeschlagen Palin Freitag, 29. März 2013 19:23
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Samstag, 30. März 2013 18:08
-
So hab gerade noch etwas rummprobiert, aber bin leider nicht wirklich weiter gekommen.
Habe versucht deine Methode in WinForms umzusetzten, aber kam aufs gleiche raus wie davor auch schon.
TimeSpan mo = (dtmone.Value - dtmons.Value) - new TimeSpan(dtDeduction.Value);
Eigentlich sollte es ja leicht sein das umzusetzen, aber ich komme nicht darauf :(
-
-
Ja na klar, es geht um Uhrzeiten, die vom User über DateTimePicker angegeben werden können.
Format ist HH:mm.
dtDeduction ist einfach ein Abzug, z.B. 00:50. Also 50 Minuten.
Nun wird eben durch den User z.B. 08:00 Uhr als Startzeit angegeben und 16:00 Uhr als Endzeit.
Differenz von Ende und Start, um die Zeitspanne zu erechnen:
(dtmone.Value - dtmons.Value)
Und nun soll eben der Abzug von dieser Differenz abgezogen werden.
Also beispielsweise errechne ich in der Differenz 8 Stunden und will davon 50 Minuten abziehen.
-
Hi xyfz,
beim DateTimePicker bekommst du ein Datum mit Uhrzeit zurück.
Da die nur die Zeit interessiert kannst du daraus deine Timespan erzeugen.
new TimeSpan(Stunden, Minuten, Sekunden)
MFG
Björn
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Samstag, 30. März 2013 18:08
-
Ok, hab es soweit hinbekommen. Ist zwar nicht sauber aber funktioniert.
(Start.Value - Ende.Value) - (Abzug.Value - Nichts)
So konnte er es rechnen. Nichts steht für einen DateTimePicker der ständig auf 00:00 steht und nicht sichtbar ist.
Danke euch trotzdem für die Antworten!
- Als Antwort markiert xyfz Freitag, 29. März 2013 19:16