Сравнение времени
Совет разработчиков 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
Мне нравится использовать этот совет, потому что он помогает мне быть последовательным. Надеюсь, это поможет и вам!