使用C#中的自定义用户给定输入计算TimeSpan
本文关键字:输入 计算 TimeSpan 用户 自定义 使用 | 更新日期: 2023-09-27 18:20:52
我想用C#创建一个程序,用于计算两个"自定义用户给定"日期之间的时间跨度。我已经写了一个代码,但它不起作用。请帮忙。
string a, b, c, d, e, f;
a = Console.ReadLine();
b = Console.ReadLine();
c = Console.ReadLine();
d = Console.ReadLine();
e = Console.ReadLine();
f = Console.ReadLine();
int g, h, i, j, k, l;
g = int.Parse(a);
h = int.Parse(b);
i = int.Parse(c);
j = int.Parse(d);
k = int.Parse(e);
l = int.Parse(f);
DateTime FirstDate = DateTime.Parse("g/h/i");
DateTime SecondDate = DateTime.Parse("j/k/l");
TimeSpan Difference = SecondDate - FirstDate;
Console.WriteLine(Difference.ToString());
Console.ReadLine();
我不明白你在那里试图做什么,但看看这个:
DateTime dt1 = new DateTime(2014,10,10,17,10,00); // 2014-10-10 17:10.00
DateTime dt2 = new DateTime(2014,10,10,13,05,00); // 2014-10-10 13:05.00
var difference = dt1.Subtract(dt2); // 04:05.00
如果两者都是日期时间格式,这将起作用
(SecondDate - FirstDate).TotalDays
//return float
或
(SecondDate - FirstDate).Days
//returns int
如果您已经强制用户输入单独的日期/月/年,则不应该将它们连接到一个字符串中,然后DateTime.Parse
它们-您将面临各种日期格式问题。相反,单独使用它们:
using System;
public class Program
{
public static void Main()
{
string day1 = Console.ReadLine();
string month1 = Console.ReadLine();
string year1 = Console.ReadLine();
string day2 = Console.ReadLine();
string month2 = Console.ReadLine();
string year2 = Console.ReadLine();
DateTime date1 = new DateTime(year: int.Parse(year1), month: int.Parse(month1), day: int.Parse(day1));
DateTime date2 = new DateTime(year: int.Parse(year2), month: int.Parse(month2), day: int.Parse(day2));
TimeSpan ts = date2 - date1;
Console.WriteLine("There are {0} days(s) or {1} hour(s) or {2} minute(s) between those dates", ts.TotalDays, ts.TotalHours, ts.TotalMinutes );
}
}
或者,您可以让用户输入完整的日期,并解析这些日期:
(...)
string date1Str = Console.ReadLine();
string date1Str = Console.ReadLine();
DateTime date1 = DateTime.Parse(date1Str);
DateTime date2 = DateTime.Parse(date2Str);
(...)
我想你要做的是:
using System;
public class Program
{
public static void Main()
{
string month1 = Console.ReadLine();
string day1 = Console.ReadLine();
string year1 = Console.ReadLine();
string month2 = Console.ReadLine();
string day2 = Console.ReadLine();
string year2 = Console.ReadLine();
DateTime date1 = DateTime.Parse(string.Format("{0}/{1}/{2}", month1, day1, year1));
DateTime date2 = DateTime.Parse(string.Format("{0}/{1}/{2}", month2, day2, year2));
TimeSpan ts = date2 - date1;
Console.WriteLine("There are {0} days(s) or {1} hour(s) or {2} minute(s) between those dates", ts.TotalDays, ts.TotalHours, ts.TotalMinutes );
}
}
你可以看到这个节目的真人小提琴!
这假设你是根据月份、日期,然后是年份来阅读日期的。如果你需要一个不同的格式,那么你需要重新安排一些东西,但这应该会给你一个大致的想法。
顺便说一句,如果你的程序有描述性的变量名,世界各地的程序员都会很感激。调用变量a
或b
或c
是不好的做法。生产环境程序中的这种事情会让其他程序员很快踢你的屁股!
编辑:
由于您是以天/月/年的格式输入的,请使用以下格式:
using System;
public class Program
{
public static void Main()
{
string day1 = Console.ReadLine();
string month1 = Console.ReadLine();
string year1 = Console.ReadLine();
string day2 = Console.ReadLine();
string month2 = Console.ReadLine();
string year2 = Console.ReadLine();
DateTime date1 = DateTime.Parse(string.Format("{0}/{1}/{2}", month1, day1, year1));
DateTime date2 = DateTime.Parse(string.Format("{0}/{1}/{2}", month2, day2, year2));
TimeSpan ts = date2 - date1;
Console.WriteLine("There are {0} days(s) or {1} hour(s) or {2} minute(s) between those dates", ts.TotalDays, ts.TotalHours, ts.TotalMinutes );
}
}