Приветствую всех. Сегодня рассмотрим примеры того как можно без труда из существующей даты вычесть отрезок времени или наоборот его сложить. Представим что у нас есть текущая дата:
1 2 3 |
DateTime date = DateTime.Now; Console.WriteLine(date); //19.05.2018 8:50:00 |
Чтобы нам добавить к текущей дате 5 часов и один день используем методы:
AddHours метод добавление часов
AddDays метод добавления дней.
1 2 3 4 5 6 7 8 9 10 |
DateTime date = DateTime.Now; Console.WriteLine(date); date= date.AddHours(5); date= date.AddDays(1); Console.WriteLine(date); //19.05.2018 9:00:05 //20.05.2018 14:00:05 |
По аналогии можно произвести эти манипуляции и с секундами, минутами, месяцами и годами использовав лишь другие методы:
1 2 3 4 |
date.AddSeconds(1); date.AddMinutes(1); date.AddMonths(1); date.AddYears(1); |
Со сложением временного интервала вроде как ничего сложного нет, и вопросов возникнуть не должно. Однако перейдем ко второй части, а именно с вычитанием даты. Так такого метода вычитание даты из даты не существует. Однако он все же есть, только возвращает текущую разницу не совсем в привычной форме восприятия по смотрим пример:
1 2 3 4 5 6 |
DateTime date = DateTime.Now; Console.WriteLine(date); DateTime date2 = new DateTime(2017, 2, 20, 13, 20, 15); Console.WriteLine(date.Subtract(date2)); // 19.05.2018 9:06:29 // 452.19:46:14.5344899 |
Воспринимать такое лично для меня не совсем логично, где разность приведена в днях и часах.
Однако есть куда лучший способ произвести разность даты и получить ее в простом понимании для нас.
1 2 3 4 5 6 7 8 9 |
DateTime date = DateTime.Now; Console.WriteLine(date); date= date.AddHours(-5); date= date.AddDays(-1); Console.WriteLine(date); // 19.05.2018 9:11:39 //18.05.2018 4:11:39 |
Таким образом мы использовали те же методы что и для добавления интервала времени. Но при расчете вычисления разности мы добавили лишь отрицательное значения в метод. Тем самым произвели разность даты.