Laden...

datetime berechnungen

Erstellt von w1z4rd2003 vor 17 Jahren Letzter Beitrag vor 16 Jahren 3.054 Views
w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 17 Jahren
datetime berechnungen

ich möchte gerne uhrzeiten zusammen addieren... habe in der msdn gelesen das es in datetime eine methode Add gibt.
Aber meine Frage ist jetzt:

mein problem ist das ich nicht weiss wie ich dieses Zeiten addieren kann. Ich habe eine Startzeit, Dauer und Pause.

da die startzeit ein string ist habe ich diese auch auseinander genommen mit Left(string,2) und Right(string,2) aber irgendwie bringt das mir nicht so viel da ich einfach dann integer erstellen kann mit int.Parse

wenn ich startzeit = 08:00, dauer=15 und pause=5 habe möchte ich gerne das ich berechnungen erstellen kann die mir solche werte ausgeben:

8:00
8:20
8:40
9:00
9:20
...
...

w1z4rd

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
vielleicht hilft Dir System.TimeSpan

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

K
231 Beiträge seit 2005
vor 17 Jahren

moin,

Startzeit.AddMinutes(15) = Dauer,

also nach DateTime Schauen.

raik

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo w1z4rd2003,

DateTime wird explizit in der Forenbeschreibung von "Basistechnologien und allgemeine .NET-Klassen" genannt. Bitte achte als Vielposter besondere auf die Forenbeschreibungen. ==> verschoben

herbivore

T
327 Beiträge seit 2006
vor 17 Jahren

Code sagt meistens mehr als alles andere:


int anfangStunde, anfangMinute, anfangSekunde;
int dauerMin;
int pauseMin;
int anzahlVorgaenge;
DateTime basis;
			
anzahlVorgaenge = 10;
dauerMin = 15;
pauseMin = 5;
anfangStunde = 8; 
anfangMinute = 0;
anfangSekunde = 0;
basis = DateTime.MinValue.Add(	new TimeSpan( anfangStunde, 
				       anfangMinute, 					                       anfangSekunde));
for(int i = 0; i < anzahlVorgaenge; i++)
{
     Console.WriteLine("Start: " + basis.ToShortTimeString());
     basis = basis.Add(new TimeSpan(0, dauerMin + pauseMin, 0));
     Console.WriteLine("Ende: " + basis.ToShortTimeString());
}

P
70 Beiträge seit 2006
vor 17 Jahren

Du kannst auch eine Zeit aus einen String konvertieren

mit Convert.ToDateTime (String)

vorrausgesetzt der String ist auch wirklich ein Zeitformat (z.b. "01.01.2005")

Grüße

plucked

T
327 Beiträge seit 2006
vor 17 Jahren

Convert.ToDateTime(string s) ist aber leider nur schwer zu verwenden, wenn nur eine Zeit in der Form hh:mm vorliegt...

Hab leider jetzt keine Möglichkeit nachzusehen, aber wäre hier evtl. die Verwendung von DateTime.ParseExact() angebracht?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo telnet.

die Parse-Methoden sind der Convert-Klasse eigentlich immer vorzuziehen.

herbivore

P
70 Beiträge seit 2006
vor 17 Jahren

weil?

Gründlicher und Flexibler?

Grüße

plucked

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo plucked,

weil objektorientierter und erweiterbarer (wenn man eigene Klassen schreibt, kann man diese mit einer Parse-Methode ausstatten, aber kann die Convert-Klasse nicht um eine entsprechende Methode erweitern).

Ansonsten ruft Convert im Zweifel eh Parse auf.

herbivore

P
70 Beiträge seit 2006
vor 17 Jahren

Achso ...

wusste gar nicht das Convert nicht erweiterbar ist )o:

Grüße

plucked

T
193 Beiträge seit 2006
vor 16 Jahren
mehrere zeiten addieren

hallo,

hab da ein problem, und zwar möchte ich aus einem string mit dem format, 08:30:00, mit einem andere string addieren (hat das selbe format). aber irgendwie schaffe ich das nicht. habe das ganze mit timespan probiert, aber irgendwie klappt das nicht.

hier ein paar ansätze, aber hab irgendwie keinen plan mehr was ich machen soll.


            string[] arbeitszeiten = Arbeitszeiten(personenid);
            for (int i = 1; i < arbeitszeiten.Length; i++)
            {
                //string[] felder = personendaten.Split(new char[] { ';' });
                //int summe = arbeitszeiten[i];
                felder2 = arbeitszeiten[i].Split(new char[] { ';' });
                DateTime dtfelder;
                dtfelder = Convert.ToDateTime(felder2);
                //string zahl = felder2[3];
                //summe = summe + zahl;
                //DateTime zeit = Convert.ToDateTime(felder2[3]);
                //TimeSpan summe = summe + zeit;
                //string zahl = Convert.ToString(felder2[3].Replace(':', ','));
                //int test = 0;
            }

vielen dank für jede hilfe.

torti

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo torti,

aber irgendwie klappt das nicht. [Hinweis] Wie poste ich richtig? Punkt 5.

herbivore

T
193 Beiträge seit 2006
vor 16 Jahren

hier nochmal mein problem:


            string[] arbeitszeiten = Arbeitszeiten(personenid);
            for (int i = 1; i < arbeitszeiten.Length; i++)
            {
                felder2 = arbeitszeiten[i].Split(new char[] { ';' });
                //DateTime summe;
                //DateTime dt = summe + Convert.ToDateTime(felder2[3]);
                TimeSpan summe;
                TimeSpan dt = summe + (TimeSpan)felder2[3];

            }

habe schon mehrere varianten versucht, mit TimeSpan und DateTime aber ich bekomme immer die Meldung das "Eine Konvertierung vom Typ "string" in "System.TimeSpan" ist nicht möglich".
Was mache ich falsch???

Kann mir bitte jemand helfen??

Danke

mfg
torti

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo torti,

verwende zur Umwandlung TimeSpan.Parse

herbivore

T
193 Beiträge seit 2006
vor 16 Jahren

hallo,

hab die lösung, danke herbivore!!


            string[] arbeitszeiten = Arbeitszeiten(personenid);
            for (int i = 1; i < arbeitszeiten.Length; i++)
            {
                felder2 = arbeitszeiten[i].Split(new char[] { ';' });
                summe = summe + TimeSpan.Parse(felder2[3]);
            }

lg
torti