我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
当前回答
我刚刚遇到这篇文章,因为我有一个类似的问题,我想在MVC中为一个实体框架对象设置时间,从视图(datepicker)中获取日期,所以时间组件是00:00:00,但我需要它是当前时间。根据这篇文章中的回答,我想出了:
myEntity.FromDate += DateTime.Now.TimeOfDay;
其他回答
我更喜欢这个:
DateTime s = //get some datetime;
s = new DateTime(s.Year, s.Month,s.Day,s.Hour,s.Minute,0);
DateTime是不可变类型,因此不能更改它。
但是,您可以基于之前的实例创建一个新的DateTime实例。在您的示例中,似乎需要Date属性,然后可以添加一个表示一天中的时间的TimeSpan。
就像这样:
var newDt = s.Date + TimeSpan.FromHours(2);
当你构造DateTime对象时,使用一个允许你指定时间的构造函数:
var myDateTime = new DateTime(2000, 01, 01, 13, 37, 42); // 2000-01-01 13:37:42
如果您已经有一个DateTime对象,并希望更改时间,您可以使用简单的方法添加分钟,小时或秒到您的DateTime:
var myDateTime = new DateTime(2000, 01, 01); // 2000-01-01 00:00:00
myDateTime = myDateTime.AddHours(13); // 2000-01-01 13:00:00
myDateTime = myDateTime.AddMinutes(37); // 2000-01-01 13:37:00
myDateTime = myDateTime.AddSecounds(42); // 2000-01-01 13:37:42
注意,我们必须“保存”每个方法调用myDateTime变量的结果。这是因为DateTime是不可变的,它的方法只是创建添加了额外小时/分钟/秒的新实例。
如果你需要同时添加小时和分钟(和/或秒)以及相同的时间,你可以通过在原始的DateTime中添加一个TimeSpan来简化代码:
var myDateTime = new DateTime(2000, 01, 01); // 2000-01-01 00:00:00
myDateTime += new TimeSpan(13, 37, 42); // 2000-01-01 13:37:42
如果你想设置绝对小时/分钟/秒,而不是添加到现有的值,你可以使用前面提到的DateTime构造函数,并重用之前的年/月/日的值:
myDateTime = new DateTime(myDateTime.Year, myDateTime.Month, myDateTime.Day,
20, 33, 19) // 2000-01-01 20:33:19
一个衬套
var date = DateTime.Now.Date.Add(new TimeSpan(4, 30, 0));
将带回今天的日期,时间为4:30:00,取代DateTime。现在对于任何date对象
DateTime出了什么问题。AddSeconds方法,您可以添加或减去秒?