Сравнение времени

Совет разработчиков 7/99

Сравнение значений времени в коде утомляло меня, когда я был моложе. В частности, я изо всех сил пытался сравнить статическое значение времени с другим значением времени, которое относится к текущему времени. Примером может служить программирование функции, которая отправляет электронное письмо через три часа после того, как пользователь зарегистрировал учетную запись. Бесчисленные ошибки были исправлены простым переключением оператора ‹ или ›. К счастью для меня, друг дал мне совет, который не дал моей голове взорваться.

Время движется слева направо

Идея состоит в том, чтобы сравнение времени согласовывалось с утверждением, что время движется слева направо на графиках. Вот график использования ЦП на сервере, где верно предыдущее утверждение.

Сравнение времени в коде идет в том же направлении. Вот как:

  • Всегда используйте ‹ или ≤ в качестве оператора
  • Левый операнд - это значение с правой стороны времени
  • Правый операнд - это значение в левой части времени

Ниже я покажу различные способы сравнения времени с помощью этого совета.

Следуя приведенному выше примеру электронной почты, отправьте электронное письмо как минимум через 3 часа после регистрации пользователя:

Time.now + 3*60*60 < user.created_at

Отправьте электронное письмо в течение 3 часов после регистрации пользователя:

user.created_at <= Time.now + 3*60*60

Найдите количество пользователей, зарегистрировавшихся за последние два часа:

Time.now — 2*60*60 <= user.created_at

Найдите количество пользователей, зарегистрировавшихся до 6 часов назад:

user.created_at < 6*60*60

Мне нравится использовать этот совет, потому что он помогает мне быть последовательным. Надеюсь, это поможет и вам!