Le réglage de l'année dans un objet DateTime
Comment puis-je changer uniquement l'année dans un objet datetime?
J'ai besoin d'appeler un certain nombre de dates à partir d'excel, et si les dates je les appelle sont avant aujourd'hui la date, l'ensemble de l'année à 2099.
par exemple, la date qui est appelé: 15/11/2010 doit être mis à 15/11/2099
Est-ce faisable? ou serait-il préférable de changer la date?
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin de créer un nouveau
DateTime
depuisDateTime
est immuable struct:Si vous souhaitez gérer le leapyear question(source date est en leapyear mais l'année cible pas), vous pouvez l'utiliser à la suite de l'extension de la méthode:
Cela permettra de conserver la même
Ticks
et laType
, donc c'est mieux que d'utiliser leDateTime
constructeur. Il sera de retour02/28/2099
si à l'origine DateTime était02/29/2016
(année bissextile).Vous pouvez l'utiliser par exemple de cette façon:
29 Feb
(par exempledt == 29 Feb 2016
)29 Feb 2016
doivent être traduits à1 Mar 2099
. Que faire avec1 Mar 2016
? C'est juste une erreur de casKind
àDateTimeKind.Unspecified
. Il doit conserver les deux. Aussi, vous pourriez simplementDateTime.IsLeapYear
au lieu de s'appuyer sur les flux de contrôle par voie d'exception.DateTime.IsLeapYear
aide, mais j'ai édité ma réponse à montrer un de complètement différent et beaucoup plus simple d'approche, qui conserve également les tiques et lesKind
🙂DateTime
est immuable type. Vous ne pouvez pas changer l'année ou de toute autre partie. Vous devez créer de nouveauxDateTime
exemple avec la nouvelle année. Il n'y a pas d'autre option.Si vous pouvez écrire une extension si vous avez besoin de le faire souvent:
Utilisation:
Remarque: le 29 février date peut devenir non valide lorsque vous modifiez l'année.