时间的加法

本文关键字:时间 | 更新日期: 2023-09-27 18:16:00

我有一个添加时间的问题。实际上时间加在上午到下午。

我给你举个例子。

Arrival Time | Waiting Time | Departure Time | Travel Time
10:30 PM     | 60           | 11:30 PM       | 0
11:30 PM     | 5            | 11:35 PM       | 5
11:40 PM     | 10           | 11:50 PM       | 10

加法按以下公式计算:

出发时间=到达时间+等待时间

下次到达时间=出发时间+旅行时间

所以问题是在11:50 PM + 10 (min)之后,它显示给我们[00:20 .00]但是应该是12:00 PM

时间的加法

您可以这样使用TimeSpan

//Get the time part with TimeOfDay
DateTime dt = new DateTime(2015, 10, 3, 11, 50, 00); //03/10/2015 11:50:00
var time = dt.TimeOfDay; //11:50:00
//Or get a TimeSpan directly
time = new TimeSpan(11, 50, 00); //11:50:00
//Add the new TimeSpan
var nextTime = time.Add(new TimeSpan(0, 10, 00)); //12:00:00

基本上,您可以通过像这样指定小时、分钟、秒来创建TimeSpan的实例

TimeSpan ts = new TimeSpan(14, 50, 00); //14:50:00

在您的问题中,您应该使用DateTime变量来保持所有时间,并仅显示时间部分(可能)。否则,当时间转到下一次约会时,就会让人困惑,容易出错。

在处理时间时,了解时间在。net中的表示方式是很重要的。

  • A DateTime为固定时间点;特定日期一天中的特定时间。将两个DateTime值相互添加是没有意义的。
  • TimeSpan为持续时间。它们可以相互加减。也可以将TimeSpan添加到DateTime中以产生新的DateTime

在你的情况下,你应该用DateTime表示到达和离开时间,而你应该用TimeSpan表示等待和旅行时间。

你仍然会得到一天的结束,因为如果你给一个值为1900-01-01 23:50的DateTime增加10分钟,你会得到1900-01-02 0:00,这是在第二天。如果您使用DateTime来表示时间,那么您可能会得到一个隐含的日期1900-01-01。要去掉日期,请使用DateTime.TimeOfDay