1

我有一个应用程序,我在其中显示航班出发日期和到达日期以及飞行时间。

对于 Flight Time Duration ,我只需减去给我 TimeStamp 之类的日期

TimeStamp duration = arrivalDate.subtract(departureDate);

所以记录就像

               Departure          Arrival                   Duration
               Sat 07:05A         Sat 09:20A                2h 15m
               Sat 10:10A         Sat 11:15A                1h 05m
               Sat 05:15P         Sat 07:16P                2h 01m
Total Duration                                              5h 21m

我有很多这样的飞行记录,我需要显示 Total Flight Duration ,为此我只需添加时间跨度

TimeStamp totalDuration = totalDuration.Add(duration);

但是我遇到了一种情况,即 totalDuration 达到像 {1.02:10:00} 这样的值,并且在尝试像这样将此值转换为 DateTime 时

TotalConnectionTime = new DateTime(2012,06, 30,(int)totalDuration.TotalHours, totalDuration.Minutes, 0);

它给出了错误

“小时、分钟和秒参数描述了无法表示的日期时间。”

(int)totalDuration.TotalHours = 26 这会产生问题

我需要将 {1.02:10:00} 转换为 26h 10m,这意味着 1 天 = 24 小时 + 2 小时 + 10 分钟

希望我能澄清我的观点。

谢谢你的帮助。

4

1 回答 1

1

阿尼尔,

根据上面的评论,我建议将 DateTime 保存为出发时间 (UTC),然后将分钟保存为整数列。然后,您可以根据需要计算偏移量。下面是一个小控制台应用程序,根据您的示例演示时间跨度的使用:

class Program
{
    static void Main(string[] args)
    {
        TimeSpan timeSpan = new TimeSpan(0,1570,0);
        var stringDisplay = string.Format("{0}:{1}:{2}", timeSpan.Days, timeSpan.Hours, timeSpan.Minutes);
        Console.WriteLine(stringDisplay);
        Console.ReadKey();
    }
}

这会产生结果:1:2:10(1 天 2 小时 10 分钟)。

添加到您的初始出发时间时,这对您应该很有效,即:

DateTime departure = new DateTime(2012, 6, 21, 7, 30, 0);
DateTime completeJourney = departure.Add(timeSpan);

希望这可以帮助。

于 2012-06-21T10:45:16.637 回答