2012-06-21 46 views
1

我有一个应用程序,其中显示航班出发日期和到达日期以及航班时间持续时间。将Timespan与1天转换为日期时间时出错

飞行时间长,我只是减去日期,给了我时间戳像

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 

我有很多这样的飞行记录,我需要表现出总飞行时间,为此 我简单地添加时间跨度就像

TimeStamp totalDuration = totalDuration.Add(duration); 

但我得到了其中totalDuration达到的值等情况{1.02:10:00},并试图将该值转换为DateTime这样

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

提示错误

“时,分的时候,第二个参数描述了一个不可表示的DateTime。“

(INT)totalDuration.TotalHours = 26并且这创造问题

我需要隐蔽到{1.02:10:00到} 26H10米这意味着第1天= 24小时±2小时加10分

希望我清楚我的观点。

感谢您的任何帮助。

+1

阿尼尔 - 你能否更清楚地解释一下,这是否仅仅是一种表示你是否接受过的表示。 TimeSpan会覆盖1天2小时26小时{26:00:00},因此不确定您在这方面尝试了什么。 –

+0

我需要将此时间戳转换为DateTime以存储在数据库中,以便我可以将其用于进一步计算,并且还需要将其用作字符串26h 10m –

+1

请@ jimtollan的建议。 TimeSpan不是DateTime。您可以添加一个时间范围到预定的到达时间。只要转换一个就可以了。 –

回答

1

阿尼尔,

Bqased对上述意见,我建议保存日期时间为Departutre时间(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); 

希望这有助于。

相关问题