wie bekomme ich gestern und morgen datetime in c #

100

Ich habe einen Code:

int MonthNow = System.DateTime.Now.Month;
int YearNow = System.DateTime.Now.Year;
int DayNow = System.DateTime.Now.Day;

Wie kann ich gestern und morgen Tag, Monat und Jahr in C # bekommen?

Natürlich kann ich einfach schreiben:

DayTommorow = DayNow +1;

aber es kann vorkommen, dass morgen ein anderer Monat oder ein anderes Jahr ist. Gibt es in C # integrierte Tools, um dies gestern und heute herauszufinden?

Alexander V.
quelle
Das Problem mit DayNow + 1oder - 1ist, wenn es der erste oder letzte Tag des Monats ist, funktioniert dies nicht. DateTime.Now.Day ist nur eine ganzzahlige Darstellung des aktuellen Tages.
Gary.S

Antworten:

124

Sie finden diese Informationen direkt in der API-Referenz .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
quelle
28
Bitte posten Sie nach Möglichkeit den relevanten Teil der verlinkten Website, anstatt nur auf die Website zu
verlinken
JMax, sicher. Der Link ist für die DateTime.AddDays-Methode, mit der Tage addiert / subtrahiert werden können. Dies ist im Kontext der Frage einfacher zu verwenden als die allgemeinere DateTime.Add-Methode.
Tabrez
5
... und das könnte der detaillierte Teil Ihrer Antwort sein :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
quelle
11
Diese Antwort zeigt, wie wichtig die Benennung ist.
Eomeroff
17

Heute :

DateTime.Today

Morgen :

DateTime.Today.AddDays(1)

Gestern :

DateTime.Today.AddDays(-1)
aleroot
quelle
16

Sie sollten es so machen, wenn Sie gestern und morgen um 00:00:00 Uhr bekommen möchten:

DateTime yesterday = DateTime.Today.AddDays(-1);
DateTime tomorrow = DateTime.Today.AddDays(1); // Output example: 6. 02. 2016 00:00:00

Denken Sie nur daran, wenn Sie es so machen:

DateTime yesterday = DateTime.Now.AddDays(-1);
DateTime tomorrow = DateTime.Now.AddDays(1); // Output example: 6. 02. 2016 18:09:23

dann erhalten Sie die aktuelle Zeit minus einen Tag und nicht gestern um 00:00:00 Uhr.

Jo Smo
quelle
15

Du willst DateTime.Today.AddDays(1).

SLaks
quelle
14

Verwendung DateTime.AddDays()( MSDN Documentation DateTime.AddDays-Methode ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
quelle
4
Dein Gestern ist "vor 24 Stunden". Verwenden Sie DateTime.Today, um einen Tag auf standardmäßige Weise rückgängig zu machen.
Henk Holterman
2

Der Trick besteht darin, "DateTime" zum Bearbeiten von Datumsangaben zu verwenden. Verwenden Sie nur Ganzzahlen und Zeichenfolgen, wenn Sie ab dem Datum ein "Endergebnis" benötigen.

Zum Beispiel (Pseudocode):

  1. Holen Sie sich "DateTime morgen = Jetzt + 1"

  2. Bestimmen Sie Datum, Wochentag, Tag des Monats - was auch immer Sie wollen - des resultierenden Datums.

paulsm4
quelle
1

Um gestern in UTC "lokal" zu werden.

  var now = DateTime.Now;
  var yesterday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(-1);
Namik Hajiyev
quelle
0

Achten Sie darauf, dass Sie Ihren Ergebnissen keine unerwünschte Zeitzone hinzufügen, insbesondere wenn das Datum über eine Web-API gesendet wird. Verwenden Sie stattdessen UtcNow, um die Zeitzone zu verringern.

Martin Dye
quelle