Entwickler-Ecke

WinForms - Datums zwischen zwei Datetimes filtern


Vegeto - Do 21.03.13 11:56
Titel: Datums zwischen zwei Datetimes filtern
HalliHallo...

Ich habe mal nur eine kurz frage.
Ich möchte zwischen zwei Datums(DateTimes), alle Datums in eine TextBox speichern/anzeigen.
Ich weiß das man sowas mit der Struktur TimeSpan machen kann, doch diese Struktur gibt nur Tage,Stunden,Minuten etc. aus, keine vollständigen Date's.

Jetzt wollte ich euch fragen ob es irgendeine Möglichkeit gibt, die Dates herraus zufiltern?

z.B.
anfangDatum = 20.05.2013
endDatum = 27.05.2013
allDate = 20.05.2013,21.05.2013,22.05.2013,23.05.2013,24.05.2013,25.05.2013,26.05.2013,27.05.2013

So stelle ich mir das vor.
ich hoff jemand kann mir irgendeine Anrregung zu diesem Thema geben.

Lg


jfheins - Do 21.03.13 12:07

Wie wäre es mit einer Schleife?

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            var start = new DateTime(20130520);
            var ende = new DateTime(20130527);

            var x = start;
            do
            {
                Debug.WriteLine(x.ToString("yyyy-MM-dd"));
                x = x.AddDays(1);
            } while (x <= ende);


Vegeto - Do 21.03.13 13:09

Hallo jheins

Habe mal dein Code für meine verhältnisse angepasst:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var start = new DateTime(20130520);
            var ende = new DateTime(20130527);

            var x = start;
            do
            {
                txt3.Text = x.ToString("dd-MM-yyyy");
                x = x.AddDays(1);
            } while (x <= ende);


Doch nun zeigt die TextBox.Text = 27.05.2013 an.
Also das letzte datum, aber mit so einer schleife müsste es funktionieren.
Ich probiere weiter, danke :)

EDIT:

So habe dein Quellcode geändert und dann macht er das was ich will :)

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var start = new DateTime(20130520);
            var ende = new DateTime(20130527);

            var x = start;
            do
            {
                txt3.Text += x.ToString("dd.MM.yyyy") + ",";

                //das habe ich ausgeblendet.
                //txt3.Text = x.ToString("dd-MM-yyyy"); 
                x = x.AddDays(1);
            } while (x <= ende);


Aya - Do 21.03.13 16:07

Hi,

du solltest das hier:


C#-Quelltext
1:
x.ToString("dd.MM.yyyy") + ",";                    


auch direkt so schreiben können eigentlich:


C#-Quelltext
1:
x.ToString("dd.MM.yyyy,");                    


ist natürlich aber Geschmackssache was man selbst als übersichtlicher empfindet.


Eine kleine andere Anmerkung noch: Die Mehrzahl vom "Datum" ist "Daten", das Wort "Datums" gibt es nicht ;) Wenn man (wie hier im Forum sinnvoll) Verwechslung des Wortes vorbeugen möchte, sollte man es eher umschreiben wie "Datumsangaben" oder direkt das englische "Dates" verwenden, á la "Ich habe mehrere Variablen vom Typ TDateTime..".

Nur so als kleiner hinweis, ist aber natürlich nichts dramatisches :)


Aya


Ralf Jansen - Do 21.03.13 16:33

Alternativ


C#-Quelltext
1:
2:
3:
4:
var start = new DateTime(20130520);
var ende = new DateTime(20130527);

txt3.Text = string.Join(",", Enumerable.Range(0, (ende - start).Days+1).Select(x => start.AddDays(x).ToString("dd.MM.yyyy")));


Vegeto - Fr 22.03.13 10:14

user profile iconAya hat folgendes geschrieben Zum zitierten Posting springen:

Eine kleine andere Anmerkung noch: Die Mehrzahl vom "Datum" ist "Daten", das Wort "Datums" gibt es nicht ;) Wenn man (wie hier im Forum sinnvoll) Verwechslung des Wortes vorbeugen möchte, sollte man es eher umschreiben wie "Datumsangaben" oder direkt das englische "Dates" verwenden, á la "Ich habe mehrere Variablen vom Typ TDateTime..".
Aya


Alles Klar, Danke :)

Und ich habe dort ein komma eingefüggt, damit ich eine übersicht habe und zugleich ein trennzeichen :)

Danke trotzdem

@ Ralf Jansen
Danke werde ich mir mal anschauen :)

Lg