2013-03-17 101 views
3

我需要從給定的到達和旅行時間計算髮射時間。我已經看過DateTime,但我不太確定我會怎麼做。我正在使用monthCalander以下面的格式獲取到達日期時間。從到達時間和旅行時間計算髮射時間

Example: 

Arrival_time = 20/03/2013 09:00:00 
Travel_time = 00:30:00 

Launch_time = Arrival_time - Travel_time 

Launch_time should equal: 20/03/2013 08:30:00 

有人可以告訴我一個簡單的方法來實現這個請。非常感謝。

回答

2

您將使用DateTime對象和時間跨度的混合。我嘲笑了一個小型控制檯應用程序來演示這一點。

using System; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.Title = "Datetime checker"; 
      Console.Write("Enter the date and time to launch from: "); 
      DateTime time1 = DateTime.Parse(Console.ReadLine()); 
      Console.WriteLine(); 
      Console.Write("Enter the time to take off: "); 
      TimeSpan time2 = TimeSpan.Parse(Console.ReadLine()); 
      DateTime launch = time1.Subtract(time2); 
      Console.WriteLine("The launch time is: {0}", launch.ToString()); 
      Console.ReadLine(); 
     } 
    } 
} 

我跑過你的示例輸入並獲得了預期的輸出,這應該滿足你的需求。

我希望這有助於加快您的發車時間:)

+0

該死,不夠快。 – 2013-03-17 19:54:38

+0

我也會看看你的程序。感謝您的幫助,它非常受歡迎。 – 2013-03-17 19:58:19

+0

您的破解立刻爲我破解了它。謝謝 – 2013-03-18 01:22:51

5

使用TimeSpan

DateTime arrivalTime = new DateTime(2013, 03, 20, 09, 00, 00); 
// Or perhaps: DateTime arrivalTime = monthCalendar.SelectionStart; 

TimeSpan travelTime = TimeSpan.FromMinutes(30); 
DateTime launchTime = arrivalTime - travelTime; 

如果由於某種原因,你不能使用MonthCalendar.SelectionStart得到的日期時間,你只需要提供的字符串,可以解析它變成如下一個DateTime(針對特定格式):

string textArrivalTime = "20/03/2013 09:00:00"; 
string dateTimeFormat = "dd/MM/yyyy HH:mm:ss"; 

DateTime arrivalTime = DateTime.ParseExact(textArrivalTime, dateTimeFormat, CultureInfo.InvariantCulture); 
+0

感謝您的快速回復。我會立即嘗試你的建議。 – 2013-03-17 19:47:59

+0

我該如何修改它以接受我原始文章中的格式?我會以某種方式使用split()嗎? – 2013-03-17 19:53:50

+0

我認爲MonthCalendar應該給你一個可以直接使用的日期時間,而不是你必須解析一些文本。如果只選擇一個日期,您應該可以使用'MonthCalendar.SelectionStart'。否則,請查看DateTime.ParseExact(),您可以在其中指定要解析的日期格式。 – 2013-03-17 19:57:26