Есть ли способ, как в коде, так и с аргументами JVM, переопределять текущее время, представленное через System.currentTimeMillis
, кроме ручной смены системных часов на главной машине?
Немного фона:
У нас есть система, которая запускает ряд учетных заданий, которые вращают большую часть их логики в течение текущей даты (т.е. 1-го числа месяца, 1-го года и т.д.).
К сожалению, многие из устаревших кодов вызывают такие функции, как new Date()
или Calendar.getInstance()
, оба из которых в конечном итоге вызывают System.currentTimeMillis
.
В целях тестирования прямо сейчас мы застреваем с ручным обновлением системных часов, чтобы манипулировать тем временем и датой, когда код думает, что тест выполняется.
Итак, мой вопрос:
Есть ли способ переопределить то, что возвращается System.currentTimeMillis
? Например, чтобы сообщить JVM автоматически добавлять или вычитать некоторое смещение перед возвратом из этого метода?
Спасибо заранее!