在 C# 中减去时间的最简单方法是什么?

问题描述 投票:0回答:8

我正在尝试开发一个工具来帮助我制定工作计划。解决以下问题的最简单方法是什么?

  • 上午 8:00 + 5 小时 = 下午 1:00
  • 下午 5:00 - 2 小时 = 下午 3:00
  • 下午 5:30 - :45 = 4:45

等等。

c# datetime math timespan
8个回答
81
投票

这些都可以通过

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)
方法。


32
投票

在此处查看所有 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,将指定的年数添加到此实例的值。


11
投票

嗨,如果您只想从 DateTime 中减去整数值,那么您必须编写这样的代码

DateTime.Now.AddHours(-2)

这里我从当前日期和时间减去 2 小时


9
投票

这也有效:

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

7
投票

使用 TimeSpan 对象捕获初始时间元素并使用

AddHours
AddMinutes
等方法。减去 3 小时,你会做
AddHours(-3)
。减去 45 分钟,你会做
AddMinutes(-45)


1
投票

试试这个

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

        }
    }
}

0
投票

原始日期时间 = 新日期时间(年、月、日、8、0、0); 更新日期时间 = 原始.Add(new TimeSpan(5,0,0));

原始日期时间 = 新日期时间(年,月,日,17,0,0); 更新日期时间 = 原始.Add(new TimeSpan(-2,0,0));

原始日期时间 = 新日期时间(年、月、日、17、30、0); 更新日期时间 = 原始.Add(new TimeSpan(0,-45,0));


-1
投票

TimeLeftToOpen= new TimeSpan(TimeLeftToOpen.Hours, TimeLeftToOpen.Minutes, TimeLeftToOpen.Seconds - 1);

© www.soinside.com 2019 - 2024. All rights reserved.