我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
我如何才能改变我的DateTime变量“s”的时间?
DateTime s = some datetime;
当前回答
DateTime出了什么问题。AddSeconds方法,您可以添加或减去秒?
其他回答
当你构造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
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));
Using an extencion to DateTime:
public enum eTimeFragment
{
hours,
minutes,
seconds,
milliseconds
}
public static DateTime ClearTimeFrom(this DateTime dateToClear, eTimeFragment etf)
{
DateTime dtRet = dateToClear;
switch (etf)
{
case eTimeFragment.hours:
dtRet = dateToClear.Date;
break;
case eTimeFragment.minutes:
dtRet = dateToClear.AddMinutes(dateToClear.Minute * -1);
dtRet = dtRet.ClearTimeFrom(eTimeFragment.seconds);
break;
case eTimeFragment.seconds:
dtRet = dateToClear.AddSeconds(dateToClear.Second * -1);
dtRet = dtRet.ClearTimeFrom(eTimeFragment.milliseconds);
break;
case eTimeFragment.milliseconds:
dtRet = dateToClear.AddMilliseconds(dateToClear.Millisecond * -1);
break;
}
return dtRet;
}
像这样使用:
游戏机。WriteLine (DateTime。Now ClearTimeFrom (eTimeFragment时间)。
这个必须返回: 2016-06-06 00:00:00.000
最好的解决方案是:
currdate.AddMilliseconds(currdate.Millisecond * -1).AddSeconds(currdate.Second * -1).AddMinutes(currdate.Minute * -1).AddHours(currdate.Hour * -1);
将. date添加到日期中将其设置为午夜(00:00)。
MyDate.Date
注意,等价的SQL是CONVERT(DATETIME, CONVERT(DATE, @MyDate))
这个方法之所以这么好,是因为它既快速输入,又易于阅读。额外的好处是不需要从字符串进行转换。
例如,要将今天的日期设置为23:30,使用:
DateTime.Now.Date.AddHours(23).AddMinutes(30)
当然,您可以替换DateTime。现在或MyDate,你可以选择任何日期。