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?


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

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

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)

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.




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.


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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.