以分钟为单位确定一次旅行需要多长时间
本文关键字:旅行 一次 长时间 为单位 分钟 | 更新日期: 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
。