如何在C#中仅设置DateTime变量的时间部分

时间:2010-11-23 14:30:49

标签: c# .net datetime

我有一个DateTime变量:

DateTime date = DateTime.Now;

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

我不能设置这些属性吗?

5 个答案:

答案 0 :(得分:125)

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

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

答案 1 :(得分:21)

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

var newDate = oldDate.Date + new TimeSpan(11, 30, 55);

答案 2 :(得分:15)

date = new DateTime(date.year, date.month, date.day, HH, MM, SS);

答案 3 :(得分:13)

我不确定你到底想做什么但是  你可以通过多种方式将日期/时间设置为你想要的......

您可以使用

指定12/25/2010 4:58 PM
DateTime myDate = Convert.ToDateTime("2010-12-25 16:58:00");

如果你有一个现有的日期时间构造,比如12/25/2010(以及任何随机时间),并且你想将它设置为12/25/2010 4:58 PM,你可以这样做:

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

ExistingTime.Date将在午夜12/25,您只需添加小时和分钟即可获得所需时间。

答案 4 :(得分:3)

由于DateTime是不可变的,所以不可能。这里有相同的讨论:How to change time in datetime?