启动时Java-Fake系统时钟

时间:2014-01-03 07:04:19

标签: java date

要解决此问题,我需要更改某个java程序的系统时钟,而无需触及代码以获取:

calendar.getinstance().get(calendar.year) = 2013

是否可以通过启动配置设置变量?

由于

编辑:对不起,我想将当前年份模拟为2013年

2 个答案:

答案 0 :(得分:1)

首先,没有管理员权限,无法在OS级别设置系统时钟。这也会影响机器上运行的所有软件。但是你只想为一个程序改变时钟。因此,当您拒绝设置系统时钟的这个选项时,必须进行任何类型的代码更改(您不想要的)。您无法通过配置属性伪造系统时间而无需更改代码。

其次,模拟java.util.Date(编写子类)的想法可能对你有用,虽然它需要更改代码。使用检测功能查看这个有趣的link

第三,Java 8中新的JSR-310有一个特殊的类java.time.Clock,它允许在现有代码中注入并可以模拟假时钟。这个解决方案的优点是:一旦你以这种方式准备好你的程序,那么你确实可以通过配置来改变时钟。但至少需要一次初始代码更改。

答案 1 :(得分:0)

如果您使用的是Linux,可以尝试使用库假冒时间:http://archive09.linux.com/feature/147801

我从未尝试过这个,我不知道这是否适用于Java。