myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Datum - Loop
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Datum - Loop

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
invisible
myCSharp.de-Mitglied

Dabei seit: 16.07.2004
Beiträge: 48


invisible ist offline Füge invisible Deiner Kontaktliste hinzu

Datum - Loop

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ist es möglich eine Schleife über einen Zeitbereich laufen zu lassen? Also z.B. vom 20.05.2005 bis 03.05.2005? Irgendwie habe ich keinen Ansatz. Einen TimeSpan für die Tage nützt mir nicht viel da ich die jeweiligen Daten brauche und dann aufwendig die Monatsübergänge ausprogrammieren müsste.

Gibt es eine bessere Möglichkeit? Bräuchte etwas Starthilfe smile Danke!
21.10.2005 10:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051


Xqgene ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

z.b. so:

C#-Code:
DateTime dat1 = new DateTime(2005, 10, 1);
DateTime dat2 = new DateTime(2005, 10, 10);
while(dat1 < dat2)
{
    Console.WriteLine(dat1.ToString());
    dat1 = dat1.AddDays(1);
}
21.10.2005 10:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
invisible
myCSharp.de-Mitglied

Dabei seit: 16.07.2004
Beiträge: 48

Themenstarter Thema begonnen von invisible

invisible ist offline Füge invisible Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hmm.... *Kopf kratz* einfacher gehts kaum noch.... Ich geh mal nen doppelten Espresso trinken. Danke jedenfalls.
21.10.2005 11:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

doch, es geht noch einfacher :-)

C#-Code:
DateTime dat2 = new DateTime(2005, 10, 10);
for (DateTime dat1 = new DateTime(2005, 10, 1); dat1 < dat2; dat1 = dat1.AddDays(1))
{
    Console.WriteLine(dat1);
}

Jedenfalls finde ich eine for-Schleife hier viel passender.

herbivore
21.10.2005 17:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051


Xqgene ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Original von herbivore
doch, es geht noch einfacher :-)

wenn du unübersichtlicher gemeint hast, dann kann man es noch steigern Augenzwinkern

C#-Code:
for (DateTime dat1 = new DateTime(2005, 10, 1),dat2 = new DateTime(2005, 10, 10); dat1 < dat2; Console.WriteLine(dat1),dat1 = dat1.AddDays(1));
21.10.2005 21:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Xqgene,

ich finde es mit for (meine Variante) übersichtlicher, klarer und praktischer als mit while.

übersichtlicher - ok, kann man drüber streiten

klarer - die Schleife, um die es hier geht, ist eine klassische Zählschleife, mit Initialisierung, Bedingung und Reinitialsierung. Dafür gibt es in der for-Schleife feste Orte und durch diese Orte ist klar, welcher Codeteil welche Bedeutung hat. Deshalb finde ich es auch übersichtlicher.

praktischer - die Reinitialsierung wird weniger leicht vergessen, sicher bei jedem Schleifendurchlauf ausgeführt und kann - noch wichtiger - durch ein continue nicht (versehentlich) übergangen werden.

Dein Beispiel "zerstört" die Struktur der for-Schleife in dem du mehr oder weniger willkürlich Anweisungen in die einzelnen Teile des Schleifenkopfes schreibst.

herbivore

PS: Wenn einem die Performace egal ist (oder wenn der Complier new DateTime(2005, 10, 10) als quasi Datumsliteral erkennen würde) könnte man schreiben

C#-Code:
for (DateTime dat = new DateTime(2005, 10, 1); dat < new DateTime(2005, 10, 10); dat = dat.AddDays(1))
{
    Console.WriteLine(dat);
}

wodurch es in meinen Augen noch klarer wird.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von herbivore am 21.10.2005 21:46.

21.10.2005 21:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051


Xqgene ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Original von herbivore
Dein Beispiel "zerstört" die Struktur der for-Schleife in dem du mehr oder weniger willkürlich Anweisungen in die einzelnen Teile des Schleifenkopfes schreibst.

thja... man soll die Möglichkeiten einer Sprache voll ausnutzen *g*.
 .NET Golf lässt grüßen!

Über die Übersichtlichkeit kann man sich streiten. Ist eh Ansichtssache.
21.10.2005 22:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 14 Jahre.
Der letzte Beitrag ist älter als 14 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.09.2020 03:02