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?


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

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

11
Essa resposta prova como nomear é importante.
Eomeroff

17

Hoje :

DateTime.Today

Amanhã:

DateTime.Today.AddDays(1)

Ontem :

DateTime.Today.AddDays(-1)

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.




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.


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.