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.