如何在C#中只设置DateTimevariables的时间部分

我有一个DateTimevariables:

DateTime date = DateTime.Now; 

我想更改DateTimevariables的时间部分。 但是当我试图访问时间部分(hh:mm:ss)时,这些字段是只读的。

我不能设置这些属性?

使用允许您指定年,月,日,小时,分钟和秒的构造函数:

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

你不能改变DateTime对象,它是不可变的。 但是,您可以将其设置为新的值,例如:

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

我不确定你想要做什么,但是你可以用许多方法把date/时间设置成你想要的。

您可以通过使用指定12/25/2010 4:58 PM

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

或者如果你有一个现有的date时间构造,比如说2010年12月25日(和任何随机时间),你想把它设置为12/25/2010 4:58 PM,你可以这样做:

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

ExistingTime.Date将在午夜12/25,并且您只需添加小时和分钟即可达到您想要的时间。

这是不可能的,因为DateTime是不可变的。 同样的讨论可以在这里: 如何改变date时间?