如何在 C# 中计算两个日期之间的差异
Puneet Dobhal
2023年1月30日
2020年6月9日
在本文中,我们将介绍如何计算 C# 中两个日期之间的差的各种方法。我们将使用 DateTime
结构来表示日期,并使用 TimeSpan
结构体来存储结果。
我们将使用以下日期定义,使用 DateTime
构造函数指定日期。
DateTime sample_date = new DateTime(2010, 6, 14);
你可能会注意到,声明中日期的元素包括年,月和日。
现在,让我们看一下计算两天之间天数的差异的各种方法。
使用 -
运算符计算 C# 中两个日期之间的差异
解决方案中最简单的方法是使用 -
运算符将两个日期直接相减。由于对象具有相同的数据类型 DateTime
,因此可以直接将它们相减。以下代码描述了此方法。
using System;
public class Sample
{
public static void Main()
{
DateTime date_1 = new DateTime(2019, 02, 12);
DateTime date_2 = new DateTime(2020, 04, 10);
/*Substraction (minus) of same data types yields difference in days*/
Console.WriteLine("Difference in days: " + (date_2 - date_1).Days);
}
}
输出:
Difference in days: 423
使用 DateTime.Substract
方法在 C# 中计算两个日期之间的差异
DateTime.Subtract
方法是另一种有效的方法。它返回两个日期之间的差,结果可以存储在 TimeSpan
数据类型中。
using System;
public class Sample
{
public static void Main()
{
DateTime date_1 = new DateTime(2019, 02, 12);
DateTime date_2 = new DateTime(2020, 04, 10);
TimeSpan Diff_dates = date_2.Subtract(date_1);
Console.WriteLine("Difference in days: " + Diff_dates.Days);
}
}
输出:
Difference in days: 423
DateTime
结构体也可以用来指定日期和时间。在这种情况下,使用 DateTime.Subtract
方法时,请确保日期在相同的时区中。否则,结果将包括时区之间的差异。
此外,使用 TimeSpan
类的双重属性,我们还可以根据需要提取更多信息。像下面的示例代码一样,我们使用 Total
前缀-TotalDays
来获取分数形式的结果。
using System;
public class Sample
{
public static void Main()
{
/*Definations include time of day */
DateTime date_1 = new DateTime(2019, 02, 12, 8, 0, 0);
DateTime date_2 = new DateTime(2020, 04, 10, 12, 0, 0);
TimeSpan Diff_dates = date_2.Subtract(date_1);
Console.WriteLine("Difference in Days = " + Diff_dates.Days);
Console.WriteLine("Exact timespan in Days = " + Diff_dates.TotalDays);
}
}
输出:
Difference in Days = 423
Exact timespan in Days = 423.166666666667
在最终确定适合你的用法的方法时,请注意 -
运算符方法未考虑日期的时区因素。因此,如果你使用的日期指定了时区,则 DateTime.Subtract
方法将成为显而易见的选择。