Секунды осталось на время в будущем? - PullRequest
1 голос
/ 01 сентября 2011

У меня есть следующий код:

var enteredDate = Convert.ToDateTime("17:45");
var todaysDateTime = DateTime.Now;
var span = enteredDate.Subtract(todaysDateTime);
double totalMins = Math.Ceiling(span.TotalMinutes);

string timeCond;
if (totalMins > 0)
{
   if (totalMins < 5)
   {
     timeCond = Math.Ceiling(span.TotalSeconds) + " seconds left.";
   }
   else
   {
     timeCond = totalMins + " minutes left.";
   }

}

Учитывая, что время сейчас будет 17:50, возвращаемая секунда будет отрицательной цифрой, я хотел бы иметь возможность вернуть секунды или минуты относительно кода в следующий раз, когда время будет 17:45 это возможно?

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011

Вы всегда можете просто добавить день:

var span = enteredDate - todaysDateTime;
if (span < TimeSpan.Zero)
{
    span += TimeSpan.FromDays(1);
}

(Обратите внимание, что предполагается, что между сегодняшним 17:45 и завтрашним 17:45 существует 24 часа. Это не относится к переходам на летнее время;приспосабливаться к этому можно, но это усложнит жизнь.)

0 голосов
/ 01 сентября 2011

1001 * попробовать *

var span = Convert.ToDateTime("17:45") > DateTime.Now ? Convert.ToDateTime("17:45") - DateTime.Now : Convert.ToDateTime("17:45").AddDays(1) - DateTime.Now
...