ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
478
478
EMPFEHLEN
-
13.01.11 22:21 #1
- Registriert seit
- Oct 2003
- Beiträge
- 117
Hi Forum
Ich möchte die Stunden eines TimeSpans erhöhen/minimeren:
Timespan : 00:05:03
+ 4h
Dann möchte ich 04:05:03.
Das klappt ja sehr gut mit add(), wenn der ursprüngliche Timespan > 0 ist. Ebenso klappt dies, wenn die Stunden bereits negativ sind und ich die Stunden minimieren möchte.
Wenn der Timespan jedoch > 0 ist (00:05:03) und ich davon 4h abziehe, dann möchte ich eben -04:05:03 - doch add() / subtract() liefert mir dann: -03:54:57, was ja korrekt 4h Unterschied ist.
Also hab ich gesucht und getüftelt und kam zum Schluss, da brauchts eine eigene Funktion:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public static TimeSpan AddHour(TimeSpan ts, int hoursToAdd) { int hours = ts.Hours + hoursToAdd; int minutes = ts.Minutes; int seconds = ts.Seconds; if (hours < 0) { minutes = -Math.Abs(minutes); seconds = -Math.Abs(seconds); } else { minutes = Math.Abs(minutes); seconds = Math.Abs(seconds); } TimeSpan result = new TimeSpan(hours, minutes, seconds); return result; }
Diese funktioniert auch einwandfrei! Doch muss ich das nun für Days, Minutes, Seconds, Milliseconds schreiben?
Es muss doch hierfür etwas viel einfachers geben! Ideen?
cheerioh
SiS
-
16.01.11 13:20 #2
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo SiS,
benutze doch einfach die Klasse DateTime. In der Findest du Methoden die AddDays, AddHours, AddMinutes usw.
Grüsse
-
17.01.11 10:58 #3
- Registriert seit
- Oct 2003
- Beiträge
- 117
Hi napstermania
ich verwende den Wert in einem eigenen Updown-Steuerelement, damit der Benutzer eine Zeitverschiebung angeben kann Datum + hh:mm:ss. TimeSpan schien mir günstig, da es eben negative Zeitspannen gibt - was es bei DateTime nicht gibt (negatives Datum). Aber ich schau' mir mal Dein Vorschlag an. Ich kann ja einfach ein Referenzdatum wählen und dann von dort aus +/- machen. Aber für eine spätere Weiterentwicklung (Verschieben um Yahre, Monate, Tage) sah ich die Lösung schon eher im TimeStamp.
Danke % Gruess
SiS
-
17.01.11 12:34 #4
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo,
dann Arbeite doch einfach stringbasiert. Im UpDown Element wird das Datum sowieso als string angezeigt. Den kannst du ganz einfach aufsplitten, bearbeiten und anschließend wieder als TimeStamp konvertieren.
Grüsse
-
Im Prinzip ist die Idee mit der TimeSpan-Klasse nicht schlecht, da es sich ja tatsächlich um eine Zeitspanne handelt, die der Benutzer eingeben soll.
Aber wie wäre es denn mit folgendem Vorschlag:
Du erstellst jeweils für Tage, Stunden, Minuten und Sekunde eine Integer-Variable. Den Benutzer lässt du über Controls (UpDownControl zum Beispiel) direkt diese 4 Variablen ändern. Für deine Berechnungen erstellst du dann aber aus diesen 4 Eingaben ein TimeSpan-Objekt (und verwendest diesen Konstruktor).
(Wenn du auch Jahre und Monate als Zeitverschiebung zulassen willst, dann ist mir nicht klar, was das bedeuten soll, da es ja Schaltjahre gibt und ein Monat 28,29,30 oder 31 Tage haben kann.hihi = -h²
Ähnliche Themen
-
Sekunden in Stunde:Minute:Sekunde
Von Transporter im Forum PHPAntworten: 22Letzter Beitrag: 16.11.05, 23:59 -
Sleep, TimeSpan, Interval
Von astaluego im Forum .NET ArchivAntworten: 10Letzter Beitrag: 23.02.05, 17:07 -
Convert.ToDateTime TimeSpan erwartet ?
Von Deletemaster im Forum .NET ArchivAntworten: 0Letzter Beitrag: 07.02.05, 21:19 -
Timespan - Verständnisschwierigkeiten
Von flotschie im Forum .NET ArchivAntworten: 6Letzter Beitrag: 03.02.05, 15:16 -
Image Ready, Frames pro Minute/sekunde
Von RonZabor im Forum PhotoshopAntworten: 6Letzter Beitrag: 25.04.04, 19:49





Zitieren
Login





