以分钟为单位确定一次旅行需要多长时间

本文关键字:旅行 一次 长时间 为单位 分钟 | 更新日期: 2023-09-27 18:26:26

让用户输入到达时间,格式为下午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();

我收到这个错误mscorlib.dll 中发生类型为System.FormatException的未处理异常

Additional information: String was not recognized as a valid DateTime.

以分钟为单位确定一次旅行需要多长时间

我怀疑您试图将字符串"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);

然后,您需要做的是从arrival中减去duration,这将给您一个新的DateTime实例,然后您需要使用适当的格式字符串来只输出时间。

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

一个普通用户会输入一个整数("以分钟为单位的时间"),您正试图将其解析为DateTime结构。.NET怎么知道这些数字是什么意思呢?它们可能是毫秒。

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