我需要找出两个日期之间的差异并显示结果 以年、月、日和小时的格式表示,例如 1 年 2 个月 6 天 4 小时。
我该怎么做。日期和时间非常简单。但是年月让我很难过。
我需要结果 100% 准确...我们不能假设每月 30 天或每年 356 天。 请帮助谢谢。
最佳答案
获得准确年数、月数和实际天数的最佳方法(因为 Timespan
Days
和 TotalDays
是从两个日期之间)是分别使用 AddYears
、AddMonths
和 AddDays
方法。
我将在此处创建一个名为 DateDiff
的类,它将计算两个日期之间的年数、月数和天数。但是,我只会给你计算年差的代码(和算法),因为如果你知道年,你也会知道如何计算月和日。当然,这样你自己也有事情要做 ;-)
代码如下:
DateDiff 类:
class DateDiff
{
public DateDiff(DateTime startDate, DateTime endDate)
{
GetYears(startDate, endDate); // Get the Number of Years Difference between two dates
GetMonths(startDate.AddYears(YearsDiff), endDate); // Getting the Number of Months Difference but using the Years difference earlier
GetDays(startDate.AddYears(YearsDiff).AddMonths(MonthsDiff), endDate); // Getting the Number of Days Difference but using Years and Months difference earlier
}
void GetYears(DateTime startDate, DateTime endDate)
{
int Years = 0;
// Traverse until start date parameter is beyond the end date parameter
while (endDate.CompareTo(startDate.AddYears(++Years))>=0) {}
YearsDiff = --Years; // Deduct the extra 1 Year and save to YearsDiff property
}
void GetMonths(DateTime startDate, DateTime endDate)
{
// Provide your own code here
}
void GetDays(DateTime startDate, DateTime endDate)
{
// Provided your own code here
}
public int YearsDiff { get; set; }
public int MonthsDiff { get; set; }
public int DaysDiff { get; set; }
}
您可以像这样从 Main 测试代码:
测试代码:
DateTime date1 = new DateTime(2012, 3, 1, 8, 0, 0);
DateTime date2 = new DateTime(2013, 11, 4, 8, 0, 0);
DateDiff dateDifference = new DateDiff(date1, date2);
Console.WriteLine("Years = {0}, Months = {1}, Days = {2}", dateDifference.DiffYears, dateDifference.DiffMonths, dateDifference.DiffDays);
关于c# - 两个日期之间的年、月、日、小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750489/