C #: какой самый простой способ вычесть время? - PullRequest
25 голосов
/ 22 октября 2010

Я пытаюсь собрать инструмент, который поможет мне составлять графики работы.Как проще всего решить следующие вопросы?

8: 00 утра + 5 часов = 1:00 вечера

и

5: 00 вечера - 2 часа = 15:00 вечера1007 *

и

5: 30 вечера -: 45 = 4: 45

и так далее.

Ответы [ 6 ]

51 голосов
/ 22 октября 2010

Все это можно сделать с помощью DateTime.Add(TimeSpan), поскольку оно поддерживает положительные и отрицательные временные области.

DateTime original = new DateTime(year, month, day, 8, 0, 0);
DateTime updated = original.Add(new TimeSpan(5,0,0));

DateTime original = new DateTime(year, month, day, 17, 0, 0);
DateTime updated = original.Add(new TimeSpan(-2,0,0));

DateTime original = new DateTime(year, month, day, 17, 30, 0);
DateTime updated = original.Add(new TimeSpan(0,45,0));

Или вы также можете использовать DateTime.Subtract(TimeSpan)Метод аналогично.

23 голосов
/ 22 октября 2010

Проверьте все методы DateTime здесь: http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Add Возвращает новый DateTime, который добавляет значение указанного TimeSpan к значению этого экземпляра.

AddDays Возвращает новый DateTime, который добавляет указанное количество дней к значению этого экземпляра.

AddHours Возвращает новый DateTime, который добавляет указанное количество часов к значению этого экземпляра.

AddMilliseconds Возвращает новый DateTime, который добавляет указанное количество миллисекунд к значению этого экземпляра.

AddMinutes Возвращает новый DateTime, который добавляет указанное количество минут к значению этого экземпляра.

AddMonths Возвращает anew DateTime, который добавляет указанное количество месяцев к значению этого экземпляра.

AddSeconds Возвращает новый DateTime, который добавляет указанное количество секунд к значению этого экземпляра.

AddTicks Возвращает новый DateTime, который добавляет указанное число тиков к значению этого экземпляра.

AddYears Возвращает aновый DateTime, который добавляет указанное число лет к значению этого экземпляра.

7 голосов
/ 22 октября 2010

Это тоже работает:

System.DateTime dTime = DateTime.Now();

// tSpan is 0 days, 1 hours, 30 minutes and 0 second.
System.TimeSpan tSpan = new System.TimeSpan(0, 1, 3, 0); 

System.DateTime result = dTime + tSpan;

Чтобы вычесть год:

DateTime DateEnd = DateTime.Now;
DateTime DateStart = DateEnd - new TimeSpan(365, 0, 0, 0);
6 голосов
/ 22 октября 2010

Используйте объект TimeSpan для захвата вашего начального элемента времени и используйте такие методы, как AddHours или AddMinutes.Чтобы вычесть 3 часа, вы будете делать AddHours(-3).Чтобы вычесть 45 минут, вы будете делать AddMinutes(-45)

0 голосов
/ 20 декабря 2018

Привет, если вы собираетесь вычитать только целочисленное значение из DateTime, тогда вы должны написать код, подобный этому

DateTime.Now.AddHours(-2)

Здесь я вычитаю 2 часа из текущей даты и времени

0 голосов
/ 18 июля 2012

попробуйте

namespace dateandtime
{

    class DatesTime
    {

        public static DateTime Substract(DateTime now, int hours,int minutes,int seconds)
        {
            TimeSpan T1 = new TimeSpan(hours, minutes, seconds);
            return now.Subtract(T1);
        }


        static void Main(string[] args)
        {
            Console.WriteLine(Substract(DateTime.Now, 36, 0, 0).ToString());

        }
    }
}
...