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
Hallo,
vielleicht hilft Dir System.TimeSpan
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
moin,
Startzeit.AddMinutes(15) = Dauer,
also nach DateTime Schauen.
raik
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
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());
}
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
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?
Hallo telnet.
die Parse-Methoden sind der Convert-Klasse eigentlich immer vorzuziehen.
herbivore
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
Achso ...
wusste gar nicht das Convert nicht erweiterbar ist )o:
Grüße
plucked
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
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
Hallo torti,
verwende zur Umwandlung TimeSpan.Parse
herbivore
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