除了手动更改主机上的系统时钟之外,是否还有其他方法,无论是在代码中还是使用 JVM 参数,来覆盖当前时间,如通过 System.currentTimeMillis
所显示的那样?
一个小小的背景:
我们有一个系统,运行许多会计工作,围绕当前日期(即1月1日,1月1日,等)的逻辑大部分
遗憾的是,许多遗留代码调用诸如 new Date()
或 Calendar.getInstance()
之类的函数,这两个函数最终都会调用到 System.currentTimeMillis
。
出于测试的目的,现在,我们必须手动更新系统时钟来操作代码认为正在运行测试的时间和日期。
所以我的问题是:
有没有办法覆盖 System.currentTimeMillis
返回的内容?例如,告诉 JVM 在从该方法返回之前自动添加或减少一些偏移量?