我需要从给定的到达和旅行时间计算发射时间。我已经研究过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
有人能告诉我一个简单的方法来解决这个问题。非常感谢。
答案 0 :(得分: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并且你只有字符串可用,你可以将其解析为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);
答案 1 :(得分: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();
}
}
}
我使用您的示例输入并获得了预期的输出,这应该可以满足您的需求。
我希望这有助于您及时加快发布速度:)