要解决此问题,我需要更改某个java程序的系统时钟,而无需触及代码以获取:
calendar.getinstance().get(calendar.year) = 2013
是否可以通过启动配置设置变量?
由于
编辑:对不起,我想将当前年份模拟为2013年
答案 0 :(得分:1)
首先,没有管理员权限,无法在OS级别设置系统时钟。这也会影响机器上运行的所有软件。但是你只想为一个程序改变时钟。因此,当您拒绝设置系统时钟的这个选项时,必须进行任何类型的代码更改(您不想要的)。您无法通过配置属性伪造系统时间而无需更改代码。
其次,模拟java.util.Date(编写子类)的想法可能对你有用,虽然它需要更改代码。使用检测功能查看这个有趣的link。
第三,Java 8中新的JSR-310有一个特殊的类java.time.Clock
,它允许在现有代码中注入并可以模拟假时钟。这个解决方案的优点是:一旦你以这种方式准备好你的程序,那么你确实可以通过配置来改变时钟。但至少需要一次初始代码更改。
答案 1 :(得分:0)
如果您使用的是Linux,可以尝试使用库假冒时间:http://archive09.linux.com/feature/147801。
我从未尝试过这个,我不知道这是否适用于Java。