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

DateTime s = some datetime;

当前回答

DateTime出了什么问题。AddSeconds方法,您可以添加或减去秒?

其他回答

//The fastest way to copy time            

DateTime justDate = new DateTime(2011, 1, 1); // 1/1/2011 12:00:00AM the date you will be adding time to, time ticks = 0
DateTime timeSource = new DateTime(1999, 2, 4, 10, 15, 30); // 2/4/1999 10:15:30AM - time tick = x

justDate = new DateTime(justDate.Date.Ticks + timeSource.TimeOfDay.Ticks);

Console.WriteLine(justDate); // 1/1/2011 10:15:30AM
Console.Read();

将. date添加到日期中将其设置为午夜(00:00)。

MyDate.Date

注意,等价的SQL是CONVERT(DATETIME, CONVERT(DATE, @MyDate))

这个方法之所以这么好,是因为它既快速输入,又易于阅读。额外的好处是不需要从字符串进行转换。

例如,要将今天的日期设置为23:30,使用:

DateTime.Now.Date.AddHours(23).AddMinutes(30)

当然,您可以替换DateTime。现在或MyDate,你可以选择任何日期。

最简单的解决方案:

DateTime s = //some Datetime that you want to change time for 8:36:44 ;
s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44);

如果您需要特定的日期和时间格式:

s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44).ToString("yyyy-MM-dd h:mm:ss");
 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

这难道不能解决你的问题吗?

Dateime dt = DateTime.Now;
dt = dt.AddSeconds(10);