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