como obter a data e hora de ontem e amanhã em c #

100

Eu tenho um código:

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

Como posso obter o dia, o mês e o ano de ontem e amanhã em C #?

Claro, posso apenas escrever:

DayTommorow = DayNow +1;

mas pode acontecer que amanhã seja outro mês ou ano. Existem ferramentas integradas em C # para descobrir ontem e hoje?

Alexander V.
fonte
O problema com DayNow + 1ou - 1é se for o primeiro ou último dia do mês, isso não funcionará. DateTime.Now.Day é apenas uma representação inteira do dia atual.
Gary.S

Respostas:

125

Você pode encontrar essas informações diretamente na referência da API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
fonte
28
Por favor, poste, se possível, a parte relevante do site vinculado em vez de apenas vincular ao site
JMax
JMax, claro. O link é para o Método DateTime.AddDays, que permite adicionar / subtrair dias. Isso é mais fácil de usar no contexto da pergunta, em comparação com o método DateTime.Add mais genérico.
Tabrez
5
... e essa pode ser a parte detalhada da sua resposta :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
fonte
11
Essa resposta prova como nomear é importante.
Eomeroff
17

Hoje :

DateTime.Today

Amanhã:

DateTime.Today.AddDays(1)

Ontem :

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

Você deve fazer desta forma, se quiser obter ontem e amanhã às 00:00:00:

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

Apenas tenha em mente que, se você fizer desta forma:

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

então você obterá a hora atual menos um dia, e não ontem às 00:00:00.

Jo Smo
fonte
15

Você quer DateTime.Today.AddDays(1).

SLaks
fonte
14

Use DateTime.AddDays()( método DateTime.AddDays da documentação do MSDN ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
fonte
4
Seu ontem é "24 horas atrás". Use DateTime.Today para indicar um dia de maneira padrão.
Henk Holterman de
2

O truque é usar "DateTime" para manipular datas; use apenas números inteiros e strings quando precisar de um "resultado final" da data.

Por exemplo (pseudo código):

  1. Obtenha "DateTime tomorrow = Now + 1"

  2. Determine a data, dia da semana, dia do mês - o que você quiser - da data resultante.

paulsm4
fonte
1

Para obter "local" ontem no UTC.

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

Cuidado ao adicionar um fuso horário indesejado aos resultados, especialmente se a data for enviada por meio de uma API da web. Use UtcNow em vez disso, para torná-lo sem fuso horário.

Martin Dye
fonte