cómo obtener ayer y mañana datetime en c #

101

Tengo un código:

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

¿Cómo puedo obtener ayer y mañana día, mes y año en C #?

Por supuesto, solo puedo escribir:

DayTommorow = DayNow +1;

pero puede suceder que mañana sea otro mes o año. ¿Hay herramientas integradas en C # para averiguar ayer y hoy?

Alejandro V.
fuente
El problema con DayNow + 1o - 1es si es el primero del último día del mes, esto no funcionará. DateTime.Now.Day es solo una representación entera del día actual.
Gary.S

Respuestas:

126

Puede encontrar esta información directamente en la referencia de API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
fuente
28
Publique si es posible la parte relevante del sitio web vinculado en lugar de solo vincularlo al sitio web
JMax
JMax, claro. El enlace es para el método DateTime.AddDays, que permite sumar / restar días. Esto es más fácil de usar en el contexto de la pregunta, en comparación con el método DateTime.Add más genérico.
Tabrez
5
... y esa podría ser la parte detallada de tu respuesta :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
fuente
11
Esta respuesta demuestra lo importante que es nombrar.
eomeroff
17

Hoy :

DateTime.Today

Mañana :

DateTime.Today.AddDays(1)

Ayer :

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

Debe hacerlo de esta manera, si desea obtener ayer y mañana a las 00:00:00 hora:

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

Solo tenga en cuenta que si lo hace de esta manera:

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

entonces obtendrá la hora actual menos un día, y no ayer a las 00:00:00 hora.

Jo Smo
fuente
15

Quieres DateTime.Today.AddDays(1).

SLaks
fuente
14

Utilice DateTime.AddDays()( Método DateTime.AddDays de documentación de MSDN ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
fuente
4
Tu ayer es "hace 24 horas". Utilice DateTime.Today para anular un día de forma estándar.
Henk Holterman
2

El truco consiste en utilizar "DateTime" para manipular fechas; solo use números enteros y cadenas cuando necesite un "resultado final" a partir de la fecha.

Por ejemplo (pseudocódigo):

  1. Obtener "DateTime tomorrow = Now + 1"

  2. Determine la fecha, el día de la semana, el día del mes, lo que desee, de la fecha resultante.

paulsm4
fuente
1

Para obtener "local" ayer en UTC.

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

Tenga cuidado de agregar una zona horaria no deseada a sus resultados, especialmente si la fecha se enviará a través de una API web. Use UtcNow en su lugar, para que sea menos de zona horaria.

Martin Dye
fuente