我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
当前回答
s = s.Date.AddHours(x).AddMinutes(y).AddSeconds(z);
这样你就可以保留你的日期,同时根据你的喜好插入新的时、分、秒部分。
其他回答
DateTime s;
//s = datevalue
s = s.AddMilliseconds(10);
s = s.AddMinutes(10);
s = s.AddSeconds(10);
s = s.AddHours(10);
您可以在参数中添加+ve/-ve值。
s.Add(new TimeSpan(1, 1, 1));
将. date添加到日期中将其设置为午夜(00:00)。
MyDate.Date
注意,等价的SQL是CONVERT(DATETIME, CONVERT(DATE, @MyDate))
这个方法之所以这么好,是因为它既快速输入,又易于阅读。额外的好处是不需要从字符串进行转换。
例如,要将今天的日期设置为23:30,使用:
DateTime.Now.Date.AddHours(23).AddMinutes(30)
当然,您可以替换DateTime。现在或MyDate,你可以选择任何日期。
设定一天的结束:
date = new DateTime(date.Year, date.Month, date.Day, 23, 59, 59);
好了,我要深入介绍我的建议,一个扩展方法:
public static DateTime ChangeTime(this DateTime dateTime, int hours, int minutes, int seconds, int milliseconds)
{
return new DateTime(
dateTime.Year,
dateTime.Month,
dateTime.Day,
hours,
minutes,
seconds,
milliseconds,
dateTime.Kind);
}
然后调用:
DateTime myDate = DateTime.Now.ChangeTime(10,10,10,0);
重要的是要注意,这个扩展返回一个新的日期对象,所以你不能这样做:
DateTime myDate = DateTime.Now;
myDate.ChangeTime(10,10,10,0);
但是你可以这样做:
DateTime myDate = DateTime.Now;
myDate = myDate.ChangeTime(10,10,10,0);
当你构造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