Как изменить время в DateTime? - PullRequest
       130

Как изменить время в DateTime?

315 голосов
/ 07 декабря 2009

Как я могу изменить только время в моей DateTime переменной "s"?

DateTime s = some datetime;

Ответы [ 27 ]

0 голосов
/ 07 декабря 2009
  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));
0 голосов
/ 07 декабря 2009

Разве это не решает твои проблемы ??

Dateime dt = DateTime.Now;
dt = dt.AddSeconds(10);
0 голосов
/ 07 декабря 2009

это гетто, но оно работает:)

DateTime dt = DateTime.Now; //get a DateTime variable for the example
string newSecondsValue = "00";
dt = Convert.ToDateTime(dt.ToString("MM/dd/yyyy hh:mm:" + newSecondsValue));
0 голосов
/ 06 июня 2016
 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;

        }

Используйте вот так:

Console.WriteLine (DateTime.Now.ClearTimeFrom (eTimeFragment.hours))

это должно вернуть: 2016-06-06 00: 00: 00.000

0 голосов
/ 10 января 2013

Лучшее решение:

currdate.AddMilliseconds(currdate.Millisecond * -1).AddSeconds(currdate.Second * -1).AddMinutes(currdate.Minute * -1).AddHours(currdate.Hour * -1);
0 голосов
/ 07 декабря 2009

При создании объекта 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 является неизменным, а его методы просто создают новые экземпляры с добавлением дополнительных часов / минут / секунд.

Если вам нужно добавить часы и минуты (и / или секунды) и одно и то же время, вы можете упростить код, добавив TimeSpan к исходному DateTime вместо этого:

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
0 голосов
/ 29 июля 2013

Я предпочитаю это:

DateTime s = //get some datetime;
s = new DateTime(s.Year, s.Month,s.Day,s.Hour,s.Minute,0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...