Если я правильно понимаю, вы хотите знать, сколько времени должно пройти, чтобы достичь следующего часа: минуты.Вы можете использовать структуру TimeSpan
для этого.
//this is your target time from 1 to 12 h
var future = new TimeSpan(11, 30, 0);
//TimeOfDay gives you the time elapsed since midnight as a TimeSpan
var difference = future.Subtract(DateTime.Now.TimeOfDay);
//check for negative TimeSpan,
//it means the target time occurs on the next day, just add 24 hours
if (difference < TimeSpan.Zero)
difference = difference.Add(TimeSpan.FromDays(1));
Теперь у вас есть TimeSpan
, который представляет то, что вам нужно.Вы можете использовать его свойства, чтобы выразить его так, как вам удобно.Например:
difference.TotalHours; //(double) total time as a fractional hour
difference.Hours; //(int) just the hour component of the total time
Что касается получения большего количества будущих времен (утра и вечера), вы можете просто добавить еще 12 часов к difference
для получения следующего события.