3 回答

TA貢獻2041條經(jīng)驗 獲得超4個贊
如果我理解正確:
private static int GetHours(DateTime date1, DateTime date2)
{
return Math.Max(0, Convert.ToInt32((date1 - date2).TotalMinutes / 60 + ((date1 - date2).TotalMinutes % 60 > 0 ? 1 : 0)));
}
用法:
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59);
DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0);
Console.Write(GetHours(date1, date0).ToString());
返回 1
跨越一天以上:
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59);
DateTime date1 = new DateTime(2018, 8, 10, 21, 0, 0);
Console.Write(GetHours(date1, date0).ToString());
返回 25

TA貢獻1865條經(jīng)驗 獲得超7個贊
在我看來,這Math.Ceiling是完成這項工作的最簡單方法:
例子:
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59);
DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0);
int hoursPassed = (int)Math.Ceiling(date1.Subtract(date0).TotalHours);
Console.WriteLine("Hours " + hoursPassed);
示例 2:
DateTime date0 = new DateTime(2018, 8, 9, 23, 59, 59);
DateTime date1 = new DateTime(2018, 8, 10, 00, 00, 00);
int DaysPassed = (int)Math.Ceiling(date1.Subtract(date0).TotalDays);
Console.WriteLine("Days "+ DaysPassed);

TA貢獻1848條經(jīng)驗 獲得超2個贊
最簡單的方法是通過在僅對小時感興趣時去除分鐘/秒以及在僅對天感興趣時通過修剪小時/分鐘/秒來創(chuàng)建修剪 DateTime變量。然后計算小時或天的差異。
// Calculates the number of hour strikes between the two given times
public static int HourStrikesBetween(DateTime from, DateTime to)
{
if(from > to)
{
throw new ArgumentException("from must not be after to");
}
// Trim to hours
DateTime fromTrimmed = new DateTime(from.Year, from.Month, from.Day, from.Hour, 0, 0);
DateTime toTrimmed = new DateTime(to.Year, to.Month, to.Day, to.Hour, 0, 0);
int hours = (int)(toTrimmed - fromTrimmed).TotalHours;
return hours;
}
// Calculates the number of midnights between the two given times
public static int MidnightsBetween(DateTime from, DateTime to)
{
if (from > to)
{
throw new ArgumentException("from must not be after to");
}
// Trim to days
DateTime fromTrimmed = new DateTime(from.Year, from.Month, from.Day);
DateTime toTrimmed = new DateTime(to.Year, to.Month, to.Day);
int days = (toTrimmed - fromTrimmed).Days;
return days;
}
樣本:
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59);
DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0);
int hourspassed = HourStrikesBetween(date0, date1); // = 1
date0 = new DateTime(2018, 8, 9, 20, 00, 00);
date1 = new DateTime(2018, 8, 9, 21, 50, 0);
hourspassed = HourStrikesBetween(date0, date1); // = still 1
date0 = new DateTime(2018, 8, 9, 20, 59, 59);
date1 = new DateTime(2018, 8, 9, 22, 10, 0);
hourspassed = HourStrikesBetween(date0, date1); // = 2
date0 = new DateTime(2018, 8, 9, 23, 59, 59);
date1 = new DateTime(2018, 8, 10, 00, 00, 00);
int daysPassed = MidnightsBetween(date0, date1); // = 1
請注意,如果您始終使用 UTC 日期時間而不是本地日期時間,這只會在跨越夏令時邊界時起作用。
- 3 回答
- 0 關(guān)注
- 179 瀏覽
添加回答
舉報