Я изучаю проблему и сталкиваюсь с каким-то подозрительным кодом, связанным с сравнением экземпляров Date с помощью операторов сравнения. например.
def stamp = ... //Date
def offset = ... //Integer
def d = new Date(stamp.time + offset)
if (d < new Date()) {
...
}
Этот ресурс указывает, что приведенное выше эквивалентно следующему
def stamp = ... //Date
def offset = ... //Integer
def d = new Date(stamp.time + offset)
if (d.compareTo(new Date()) < 0) {
...
}
Однако документация GDK на датах содержит примеры сравнения дат с использованием compareTo
, before
и after
, и мне кажется напомнить о том, как избежать использования операторов сравнения на Датах из-за опыта с неожиданными результатами. Являются ли эти два примера кода действительно эквивалентными (то есть, можно ли безопасно использовать операторы сравнения в датах в Groovy или использовать только compareTo
, before
и after
)?
Спасибо!