come ottenere ieri e domani datetime in c #


101

Ho un codice:

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

Come posso ottenere ieri e domani giorno, mese e anno in C #?

Certo, posso semplicemente scrivere:

DayTommorow = DayNow +1;

ma può succedere che domani sia un altro mese o anno. Sono disponibili strumenti integrati in C # per scoprire ieri e oggi?


Il problema con DayNow + 1o - 1è se è il primo dell'ultimo giorno del mese questo non funzionerà. DateTime.Now.Day è solo una rappresentazione intera del giorno corrente.
Gary.S

Risposte:


126

Puoi trovare queste informazioni direttamente nel riferimento API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);

28
Si prega di pubblicare, se possibile, la parte pertinente del sito Web collegato invece di collegare solo il sito Web
JMax

JMax, certo. Il collegamento è per il metodo DateTime.AddDays, che consente di aggiungere / sottrarre giorni. Questo è più facile da usare nel contesto della domanda, rispetto al metodo DateTime.Add più generico.
Tabrez

5
... e questa potrebbe essere la parte dettagliata della tua risposta :).
C4d

160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);

11
Questa risposta dimostra quanto sia importante la denominazione.
eomeroff

17

Oggi :

DateTime.Today

Domani :

DateTime.Today.AddDays(1)

Ieri :

DateTime.Today.AddDays(-1)

16

Dovresti farlo in questo modo, se vuoi ricevere ieri e domani alle 00:00:00:

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

Tieni presente che se lo fai in questo modo:

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

quindi si otterrà l'ora corrente meno un giorno e non ieri alle 00:00:00.




2

Il trucco sta nell'usare "DateTime" per manipolare le date; usa solo numeri interi e stringhe quando hai bisogno di un "risultato finale" dalla data.

Ad esempio (pseudo codice):

  1. Ottieni "DateTime tomorrow = Now + 1"

  2. Determina la data, il giorno della settimana, il giorno del mese, qualunque cosa tu voglia, della data risultante.


1

Per ottenere "locale" ieri in UTC.

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

0

Attenzione ad aggiungere un fuso orario indesiderato ai risultati, soprattutto se la data verrà inviata tramite un'API Web. Usa UtcNow invece, per renderlo senza fuso orario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.