Autor Beitrag
kerstel
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 05.12.11 14:41 
Hallo,
ich habe ein Problem mit folgendem Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
DateTime dtContractEnd = DateTime.Parse(sContract.Substring(34210).Trim());
DateTime dtPurchaseEnd = dtContractEnd;
DateTime dtAktDatum = DateTime.Now;
int[] daysPerMonth = { 312831303130313130313031 };

if (DateTime.IsLeapYear(dtAktDatum.Year))
    daysPerMonth[1] = 29// Sonderbehandlung für Februar

if (dtAktDatum.Day < dtContractEnd.Day)
{
    DateTime dtDummy = dtAktDatum.AddMonths(-1);
    dtPurchaseEnd = new DateTime(dtDummy.Year, dtDummy.Month, dtContractEnd.Day);
}

Die Zeile dtPurchaseEnd = new DateTime(dtDummy.Year, dtDummy.Month, dtContractEnd.Day); bringt nun einen Fehler:
"Die Parameter \"Year\", \"Month\", und \"Day\" beschreiben eine nicht darstellbare DateTime."

In dtDummy steht ein Wert: {05.11.2011 13:07:11}, und wenn ich dtDummy.Year usw. einer Variablen zuweise geht das auch.

Woran kann das liegen?

lgr
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Mo 05.12.11 15:08 
Hallo kerstel

Das muss am String sContract liegen.
Folgender Code funktioniert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
            DateTime dtContractEnd = DateTime.Parse("01.01.2011");
            DateTime dtPurchaseEnd = DateTime.Parse("01.01.2011");
            DateTime dtAktDatum = DateTime.Now;
            if (dtAktDatum > dtPurchaseEnd)
            {
                DateTime dtDummy = dtAktDatum.AddMonths(-1);
                dtPurchaseEnd = new DateTime(dtDummy.Year, dtDummy.Month, dtContractEnd.Day);
                MessageBox.Show(Convert.ToString(dtPurchaseEnd));
            }
            else
            {
            }

Was steht denn genau im String sContract nach der Verwendung der Trim-Methode?
Da wird wahrscheinlich der Tag falsch interpretiert.

_________________
Gruss
mats74
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 05.12.11 15:11 
Hi,

hab mir das mal als string ausgegeben:

string s = sContract.Substring(342, 10).Trim(); gibt 31.12.2011 zurück

und dtContractEnd ist {31.12.2011 00:00:00}

lgr
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 05.12.11 15:13 
ach *mist*e ich idiot. ich versuch damit ja den 31.11.2011 zu erzeugen...

Danke für die Hilfe :)
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Mo 05.12.11 15:14 
... und dann gibt es den 31.11.2011 in Wirklichkeit?
(Du rechnest noch einen Monat von dtDummy ab)

Sorry, war ein Bisschen zu spät.

_________________
Gruss
mats74

Für diesen Beitrag haben gedankt: kerstel