缥缈止盈
如果我理解正确: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
莫回无
在我看来,这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);
慕尼黑5688855
最简单的方法是通过在仅对小时感兴趣时去除分钟/秒以及在仅对天感兴趣时通过修剪小时/分钟/秒来创建修剪 DateTime变量。然后计算小时或天的差异。// Calculates the number of hour strikes between the two given timespublic 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 timespublic 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); // = 1date0 = new DateTime(2018, 8, 9, 20, 00, 00);date1 = new DateTime(2018, 8, 9, 21, 50, 0);hourspassed = HourStrikesBetween(date0, date1); // = still 1date0 = new DateTime(2018, 8, 9, 20, 59, 59);date1 = new DateTime(2018, 8, 9, 22, 10, 0);hourspassed = HourStrikesBetween(date0, date1); // = 2date0 = new DateTime(2018, 8, 9, 23, 59, 59);date1 = new DateTime(2018, 8, 10, 00, 00, 00);int daysPassed = MidnightsBetween(date0, date1); // = 1请注意,如果您始终使用 UTC 日期时间而不是本地日期时间,这只会在跨越夏令时边界时起作用。