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ś?


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);

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);

11
Ta odpowiedź dowodzi, jak ważne jest nazewnictwo.
eomeroff

17

Dzisiaj :

DateTime.Today

Jutro:

DateTime.Today.AddDays(1)

Wczoraj :

DateTime.Today.AddDays(-1)

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.




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.


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);

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ą.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.