Java-Fake 系统时钟启动

标签 java date

作为解决方法,我需要更改某个 Java 程序的系统时钟,而不触及代码才能获取:

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

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

谢谢

编辑:抱歉,我想将当前年份模拟为 2013

最佳答案

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

其次,模拟 java.util.Date (编写子类)的想法可能对您有用,尽管它需要更改代码。看到这个有趣的link使用仪器。

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

关于Java-Fake 系统时钟启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898378/

相关文章:

java - 如何使用 SWT 组合按钮和文本字段

java - 使用 Joda-Time 计算一周中的第二天和时间

r - R 中的第 53 周?

java - 在java中将十进制月份添加到日期

javascript - Moment.js : Check if string is in correct format

java - 找不到字体指定的路径

java - 为什么我不能在 JAVA 方法中使用变量?

java - 检测用户鼠标悬停在 JPanel 上 Path2D 形状的边缘

mysql - JOIN 与 "just"选择

java - 如何在 jdbc MySQL 查询中处理 0000-00-00 日期