确定一趟旅行需要多长时间

时间:2013-08-04 12:28:41

标签: c#

让用户以下午3:30的格式输入到达时间 然后询问用户到达目的地需要多长时间。 然后我需要显示他们需要离开的时间,以便准时到达目的地。

到目前为止我有这个

Console.WriteLine("Enter the arrival time <e.g. 3:30 PM>:");
DateTime time = Convert.ToDateTime(Console.ReadLine());

Console.WriteLine("How long is the trip time in minutes:");
string date = Console.ReadLine();
DateTime durationOfTrip = DateTime.Parse(date);

TimeSpan diff = time.Subtract(durationOfTrip);
Console.WriteLine(diff);
Console.ReadLine();

我收到此错误 System.FormatException

中发生了mscorlib.dll类型的未处理异常
Additional information: String was not recognized as a valid DateTime.

2 个答案:

答案 0 :(得分:4)

我怀疑你正在尝试将字符串“3:30 PM”解析为DateTime的一个实例。您需要使用自定义解析字符串:

string arrivalInput = Console.ReadLine();
var arrival =
    DateTime.ParseExact(
        arrivalTimeInput,
        "hh:mm tt",
        CultureInfo.InvariantCulture
    );

解析时间,但会将日期组件设置为今天。

不幸的是,只有在框架中没有 time 的干净封装。

然后你的下一个问题是

string date = Console.ReadLine();
DateTime durationOfTrip = DateTime.Parse(date);

您尝试将“30”之类的内容解析为DateTime。这显然不会飞。您告诉用户在几分钟内输入输入,因此将输入转换为TimeSpan的实例:

string durationInput = Console.ReadLine();
var duration = new TimeSpan(0, Int32.Parse(durationInput), 0);

var duration = TimeSpan.ParseExact(s, "mm", CultureInfo.InvariantCulture);

然后,您需要做的是来自duration的{​​{3}} arrival,这将为您提供DateTime的新实例,然后您需要使用适当的格式化字符串只输出时间。

请注意,我已经为您的变量名称提供了更有意义的名称。用户输入行程持续时间的名称date特别不清楚。

答案 1 :(得分:0)

普通用户会输入一个整数(“以分钟为单位的时间”),并且您尝试将其解析为DateTime结构。 .NET将如何知道这些数字的含义?它们也可能是几毫秒。

第一步可能是解析int的输入,然后使用提到的AddMinutes()方法JMK将分钟应用于已创建的DateTime time