2013-03-12 12 views
32

Ich möchte Tage in einem Datum hinzufügen. Ich habe einen Code wie folgt:Datum in C# Tage hinzufügen

DateTime endDate = Convert.ToDateTime(this.txtStartDate.Text); 
Int64 addedDays = Convert.ToInt64(txtDaysSupp.Text); 
endDate.AddDays(addedDays); 
DateTime end = endDate; 
this.txtEndDate.Text = end.ToShortDateString(); 

Aber dieser Code funktioniert nicht, Tage werden nicht hinzugefügt! Was für ein dummer Fehler, den ich mache?

+0

Was nicht funktioniert? –

+1

Ich sehe vier exakt die gleichen Antworten. Warum gerade ... –

Antwort

63

DateTime ist unveränderlich. Das bedeutet, dass Sie den Status nicht ändern können und das Ergebnis einer Operation einer Variablen zuweisen müssen.

endDate = endDate.AddDays(addedDays); 
+0

Dass jeder Werttyp implizit unveränderlich ist, nicht mehr. – Freeman

+0

@Freeman, ja es ist ein Werttyp und es ist unveränderlich – Habib

+0

@Freeman, Sie haben Recht, finden Sie diese Diskussion auch http://StackOverflow.com/Questions/868411/Are-value-types-immutable-by-definition – Habib

11

Sie müssen den Rückgabewert abfangen.

Die Methode DateTime.AddDays gibt ein Objekt zurück, dessen Wert die Summe aus Datum und Uhrzeit der Instanz und dem hinzugefügten Wert ist.

endDate = endDate.AddDays(addedDays); 
8

Sein, weil die AddDays() Methode ein neues DateTime zurückgibt, dass Sie nicht zuweisen oder überall verwenden. Verwendung

Beispiel:

DateTime newDate = endDate.AddDays(2); 
2

Warum verwenden Sie Int64? AddDays fordert einen double-Wert an, der hinzugefügt werden soll. Dann müssen Sie den Rückgabewert AddDays. verwenden. Siehe here.

+0

Diese Methode erfordert lange Typvariable! –

+0

@NomiAli Nein, tut es nicht! Sehen Sie sich den Link an, den ich zur Verfügung gestellt habe. –

5

Weisen Sie die enddate zu einem gewissen Zeitpunkt variabel, da AddDays Methode neue Datetime als das Ergebnis zurück ..

Datetime somedate=endDate.AddDays(2); 
0

Verwendung Dieser:

 DateTime dateTime = new DateTime(); 
    dateTime = DateTime.Now; 
    DateTime newDateTime = new DateTime(); 
    TimeSpan NumberOfDays = new TimeSpan(2, 0, 0, 0, 0); 
    newDateTime = dateTime.Add(NumberOfDays); 
Verwandte Themen