web-dev-qa-db-fra.com

Comment définir uniquement le temps d'une variable DateTime en C #

J'ai une variable DateTime:

DateTime date = DateTime.Now;

Je veux changer la partie heure d'une variable DateTime. Mais lorsque j'ai essayé d'accéder à la partie heure (hh: mm: ss), ces champs sont en lecture seule.

Je ne peux pas définir ces propriétés?

75
Vaibhav Jain

Utilisez le constructeur qui vous permet de spécifier l'année, le mois, le jour, les heures, les minutes et les secondes:

var dateNow = DateTime.Now;
var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day, 4, 5, 6);
126
Ahmad Mageed

vous ne pouvez pas changer l'objet DateTime, il est immuable. Cependant, vous pouvez lui attribuer une nouvelle valeur, par exemple:

var newDate = oldDate.Date + new TimeSpan(11, 30, 55);
22
Daniel Perez
date = new DateTime(date.year, date.month, date.day, HH, MM, SS);
15
Rhapsody

Je ne sais pas exactement ce que vous essayez de faire, mais vous pouvez régler la date et l'heure exactement de ce que vous voulez de plusieurs manières ...

Vous pouvez spécifier 12/25/2010 4:58 PM en utilisant

DateTime myDate = Convert.ToDateTime("2010-12-25 16:58:00");

OU si vous avez une construction datetime existante, dites 12/25/2010 (et toute heure aléatoire) et que vous souhaitez la définir sur 12/25/2010 16:58, vous pouvez le faire comme ceci:

DateTime myDate = ExistingTime.Date.AddHours(16).AddMinutes(58);

Le ExistingTime.Date il sera 12h25 à minuit et il vous suffira d’ajouter des heures et des minutes pour obtenir l’heure souhaitée.

13
David

Ce n'est pas possible car DateTime est immuable. La même discussion est disponible ici: Comment changer l'heure dans datetime?

3
cspolton