Простой путь ко времени обработки в C#?

Я думаю, что как много вещей, это - анализ рентабельности. Вы можете программа в предпринятом восстановлении после malloc () отказ - хотя это может быть трудно (Ваш обработчик не должен ссориться с той же нехваткой памяти, это предназначено для контакта с).

Вы уже отметили, что самый общий случай должен вымыться и перестать работать корректно. В этом случае было решено, чтобы стоимость прерывания корректно была ниже, чем комбинация затрат на разработку и стоимости производительности в восстановлении.

я уверен, что можно думать собственных примерах о ситуациях, где завершение программы является очень дорогой опцией (аппарат жизнеобеспечения, управление космическим кораблем, продолжительное и строго ограниченное во времени финансовое вычисление и т.д.) - хотя первый оборонительный рубеж должен, конечно, гарантировать, что программа имеет предсказуемое использование памяти и что среда может предоставить это.

5
задан Deduplicator 29 June 2015 в 16:04
поделиться

4 ответа

Совершенно непонятно, что вы имеете в виду под "больше, чем startHour" ... но взятие

TimeSpan startHour = new TimeSpan(12, 25, 43);
if (endHour.TimeOfDay > startHour)
{
    ...
}

... работает довольно просто.

Безусловно, добавьте проверку аргументов в убедитесь, что вы не указали значение для startHour, равное < 0 или > 23 часа, но это все довольно просто.

API даты и времени .NET вполне достаточно примитивный (даже в 3.5) по сравнению, скажем, с Joda Time - но в данном конкретном случае я думаю, что это не так уж и плохо.

11
ответ дан 18 December 2019 в 14:48
поделиться

Небольшая подсказка - .NET поддерживает арифметические операции с объектами DateTime и возвращает объект TimeSpan. Таким образом, вы можете сделать следующее:

DateTime fromDate = ....
DateTime toDate = ....
TimeSpan diff = toDate - fromDate;

, и вы можете расширить это до:

DateTime fromDate = DateTime.Now;
DateTime toDate = DateTime.Now.addMinutes(x);

if ((toDate - fromDate).TotalMinutes > 15) {
    ...
}
2
ответ дан 18 December 2019 в 14:48
поделиться

Итак, вас интересует только компонент времени даты.

if(DateTime.Now.TimeOfDay > startHour.TimeOfDay)
{
  // do stuff
}

Что плохого в этом?

0
ответ дан 18 December 2019 в 14:48
поделиться

Вы должны использовать TimeSpan для startHour и endHour. При сравнении с текущим моментом вы должны «преобразовать» их в полное DateTime или получить время с помощью DateTime.TimeOfDay, как упомянул Джон Скит.


TimeSpan startHour = new TimeSpan(12, 25, 43);
DateTime now = DateTime.Now;

if (now.CompareTo(DateTime.Today.Add(startHour)) > 0) {
    //...
}

или


TimeSpan startHour = new TimeSpan(12, 25, 43);
DateTime now = DateTime.Now;

if (now.TimeOfDay.CompareTo(startHour) > 0) {
    //...
}
0
ответ дан 18 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: