С#: что является самым простым способом вычитать время?

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

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

и

5:00 pm - 2 часа = 3:00 вечера

и

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

и т.д.

Ответ 1

Все это можно сделать с помощью 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).

Ответ 2

Ознакомьтесь со всеми методами DateTime здесь: http://msdn.microsoft.com/en-us/library/system.datetime.aspx

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

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

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

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

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

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

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

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

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

Ответ 3

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

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);

Ответ 4

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

Ответ 5

попробуйте это

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());

        }
    }
}

Ответ 6

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

DateTime.Now.AddHours(-2)

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