jak uzyskać wczorajszą i jutrzejszą datę i godzinę w c #

101

Mam kod:

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

Jak uzyskać wczorajszy i jutrzejszy dzień, miesiąc i rok w C #?

Oczywiście mogę po prostu napisać:

DayTommorow = DayNow +1;

ale może się zdarzyć, że jutro będzie inny miesiąc lub rok. Czy istnieją wbudowane narzędzia C #, które pozwalają sprawdzić wczoraj i dziś?

Alexander V.
źródło
Problem z DayNow + 1lub - 1jest, jeśli jest to pierwsza od ostatniego dnia miesiąca, to przyzwyczajenie praca. DateTime.Now.Day to po prostu liczba całkowita reprezentująca bieżący dzień.
Gary.S

Odpowiedzi:

127

Możesz znaleźć te informacje bezpośrednio w dokumentacji API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
źródło
28
Jeśli to możliwe,
zamieść
JMax, jasne. Link dotyczy metody DateTime.AddDays, która umożliwia dodawanie / odejmowanie dni. Jest to łatwiejsze w użyciu w kontekście pytania w porównaniu z bardziej ogólną metodą DateTime.Add.
Tabrez,
5
... i to może być szczegółowa część Twojej odpowiedzi :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
źródło
11
Ta odpowiedź dowodzi, jak ważne jest nazewnictwo.
eomeroff
17

Dzisiaj :

DateTime.Today

Jutro:

DateTime.Today.AddDays(1)

Wczoraj :

DateTime.Today.AddDays(-1)
aleroot
źródło
16

Powinieneś to zrobić w ten sposób, jeśli chcesz otrzymać wczoraj i jutro o godzinie 00:00:00:

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

Pamiętaj tylko, że jeśli robisz to w ten sposób:

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

wtedy otrzymasz aktualny czas minus jeden dzień, a nie wczoraj o godzinie 00:00:00.

Jo Smo
źródło
15

Chcesz DateTime.Today.AddDays(1).

SLaks
źródło
14

Użyj DateTime.AddDays()( Metoda MSDN Documentation DateTime.AddDays ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
źródło
4
Twoje wczoraj to „24 godziny temu”. Użyj DateTime.Today, aby cofnąć dzień w standardowy sposób.
Henk Holterman,
2

Sztuczka polega na użyciu „DateTime” do manipulowania datami; używaj liczb całkowitych i ciągów tylko wtedy, gdy potrzebujesz „końcowego wyniku” od daty.

Na przykład (pseudo kod):

  1. Uzyskaj „DateTime tomorrow = Now + 1”

  2. Określ datę, dzień tygodnia, dzień miesiąca - cokolwiek chcesz - wynikowej daty.

paulsm4
źródło
1

Aby uzyskać „lokalny” wczoraj w UTC.

  var now = DateTime.Now;
  var yesterday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(-1);
Namik Hajiyev
źródło
0

Uważaj na dodanie niechcianej strefy czasowej do wyników, zwłaszcza jeśli data ma zostać wysłana za pośrednictwem internetowego interfejsu API. Zamiast tego użyj UtcNow, aby ograniczyć strefę czasową.

Martin Dye
źródło