comment obtenir la date d'hier et de demain en c #

101

J'ai un code:

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

Comment puis-je obtenir le jour, le mois et l'année d'hier et de demain en C #?

Bien sûr, je peux simplement écrire:

DayTommorow = DayNow +1;

mais il peut arriver que demain soit un autre mois ou une autre année. Existe-t-il dans C # des outils intégrés pour découvrir hier et aujourd'hui?

Alexandre V.
la source
Le problème avec DayNow + 1ou - 1est si c'est le premier du dernier jour du mois cela ne fonctionnera pas. DateTime.Now.Day est juste une représentation entière du jour en cours.
Gary.S

Réponses:

126

Vous pouvez trouver ces informations directement dans la référence API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
la source
28
Veuillez publier si possible la partie pertinente du site Web lié au lieu de créer un lien uniquement vers le site Web
JMax
JMax, bien sûr. Le lien est pour la méthode DateTime.AddDays, qui permet d'ajouter / soustraire des jours. Ceci est plus facile à utiliser dans le contexte de la question, par rapport à la méthode DateTime.Add plus générique.
Tabrez
5
... et cela pourrait être la partie détaillée de votre réponse :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
la source
11
Cette réponse prouve à quel point la dénomination est importante.
eomeroff
17

Aujourd'hui :

DateTime.Today

Demain :

DateTime.Today.AddDays(1)

Hier:

DateTime.Today.AddDays(-1)
aleroot
la source
16

Vous devriez le faire de cette façon, si vous voulez obtenir hier et demain à 00:00:00 heure:

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

Gardez simplement à l'esprit que si vous le faites de cette façon:

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

alors vous obtiendrez l'heure actuelle moins un jour, et pas hier à 00:00:00 heure.

Jo Smo
la source
15

Tu veux DateTime.Today.AddDays(1).

SLaks
la source
14

Utilisez DateTime.AddDays()( MSDN Documentation DateTime.AddDays Method ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
la source
4
Votre hier est "il y a 24 heures". Utilisez DateTime.Today pour annuler un jour de manière standard.
Henk Holterman
2

L'astuce consiste à utiliser "DateTime" pour manipuler les dates; n'utilisez que des entiers et des chaînes lorsque vous avez besoin d'un "résultat final" à partir de la date.

Par exemple (pseudo code):

  1. Obtenez "DateTime demain = Maintenant + 1"

  2. Déterminez la date, le jour de la semaine, le jour du mois - tout ce que vous voulez - de la date résultante.

paulsm4
la source
1

Pour obtenir "local" hier 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
la source
0

Méfiez-vous d'ajouter un fuseau horaire indésirable à vos résultats, surtout si la date va être envoyée via une API Web. Utilisez plutôt UtcNow pour le rendre sans fuseau horaire.

Martin Dye
la source