Как рассчитать дату и время до x часов и минут?

Я хочу найти точную дату и время, которые были до x часов и x минут.

Например, сегодня 2/21/2016 1:15 PM, и я хочу знать, сколько времени было до 13 часов 56 минут или 73 часов и 34 минут. Как проще всего это сделать на С#?

Я нашел эту ссылку, но не знаю точно, как его использовать.


person b450005    schedule 21.02.2016    source источник


Ответы (4)


Используйте AddHours() и AddMinutes(). Также работает с отрицательными значениями, чтобы вернуться назад во времени.

Пример:

DateTime pastDate = DateTime.Now.AddHours(-74).AddMinutes(-34);
person HaukurHaf    schedule 21.02.2016
comment
Хорошо, спасибо, ребята! А как насчет точной даты, например. до 72 часов дата тоже отличается? - person b450005; 21.02.2016
comment
Просто попробуйте. Конечно, это также изменит дату. - person HaukurHaf; 21.02.2016
comment
@b450005: Вы имеете в виду DateTime.Now.AddHours(-72)? Пожалуйста, не забудьте проголосовать за ответы, которые помогли вам, и принять правильный ответ. :) - person Markus Weninger; 21.02.2016
comment
Да хотел написать 72 :-) - person HaukurHaf; 21.02.2016

Просто для полноты вы также можете использовать операции TimeSpan для объектов DateTime.

Что-то типа

DateTime d = ...;
DateTime newDate = d - new TimeSpan(....);
person Bogey    schedule 21.02.2016
comment
Это не сработает, потому что новое ключевое слово зарезервировано. - person Markus Weninger; 21.02.2016

Пример:

int d = 0;
int h = -13;
int m = -56;
int s = 0;
DateTime past = DateTime.Now.AddDays(d).AddHours(h).AddMinutes(m).AddSeconds(s);

Или, короче:

DateTime past = DateTime.Now.AddHours(-13).AddMinutes(-56);

Это даст вам время 13 часов и 56 минут назад. Обратите внимание на минус для часов и минут, они используются для вычитания определенного количества времени.

Взгляните на DateTime, и все его методы, начинающиеся с Add.

person Markus Weninger    schedule 21.02.2016

Вы можете легко использовать DateTime.AddXXX методы для этого.

Например;

var dt1 = DateTime.Now.AddHours(-13).AddMinutes(-56);

or

var dt1 = DateTime.Now.AddHours(-73).AddMinutes(-34);

Если вы хотите взять из результатов только дату или время, вы можете использовать его Date или TimeOfDay свойства.

var date = dt1.Date;

or

var time = dt1.TimeOfDay;
person Soner Gönül    schedule 21.02.2016
comment
Ваша самая первая версия не содержала никакой информации, которую не охватывали два других ответа. Удален мой -1, потому что вы добавили дополнительную информацию о дате и времени дня. - person Markus Weninger; 21.02.2016
comment
@MarkusWeninger Да, благодаря моему плохому интернет-соединению редактирование ответа занимает 3-4 минуты. - person Soner Gönül; 21.02.2016