我如何才能改变我的DateTime变量“s”的时间?

DateTime s = some datetime;

当前回答

s = s.Date.AddHours(x).AddMinutes(y).AddSeconds(z);

这样你就可以保留你的日期,同时根据你的喜好插入新的时、分、秒部分。

其他回答

我更喜欢这个:

DateTime s = //get some datetime;
s = new DateTime(s.Year, s.Month,s.Day,s.Hour,s.Minute,0);

好了,我要深入介绍我的建议,一个扩展方法:

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);
 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

使用日期。添加并添加带有您想添加的新时间的New TimeSpan

DateTime dt = DateTime.Now
dt.Date.Add(new TimeSpan(12,15,00))

试试这个

var NewDate = Convert.ToDateTime(DateTime.Now.ToString("dd/MMM/yyyy")+" "+"10:15 PM")/*Add your time here*/;