Java伪系统时钟启动
为了解决这个问题,我需要在不接触代码的情况下更改某个java程序的系统时钟,以便:Java伪系统时钟启动,java,date,Java,Date,为了解决这个问题,我需要在不接触代码的情况下更改某个java程序的系统时钟,以便: calendar.getinstance().get(calendar.year) = 2013 是否可以通过启动配置设置变量 谢谢 编辑:抱歉,我想将当前年份模拟为2013年如果您在Linux上,您可以尝试使用库来伪造时间: 我从未尝试过这一点,我不知道这是否适用于Java。首先,如果没有管理员权限,就不可能在操作系统级别设置系统时钟。这也会影响机器上运行的所有软件。但是你只想为一个程序改变时钟。因此,当您拒
calendar.getinstance().get(calendar.year) = 2013
是否可以通过启动配置设置变量
谢谢
编辑:抱歉,我想将当前年份模拟为2013年如果您在Linux上,您可以尝试使用库来伪造时间:
我从未尝试过这一点,我不知道这是否适用于Java。首先,如果没有管理员权限,就不可能在操作系统级别设置系统时钟。这也会影响机器上运行的所有软件。但是你只想为一个程序改变时钟。因此,当您拒绝设置系统时钟的选项时,任何类型的代码更改都是必要的(您不想要的)。在没有任何代码更改的情况下,不能仅通过配置属性伪造系统时间 其次,模仿java.util.Date(编写子类)的想法可能适合您,尽管它需要更改代码。看到这个有趣的使用工具
第三,Java8中新推出的JSR-310有一个特殊的类
Java.time.Clock
,它允许在现有代码中注入,并可以模拟假时钟。此解决方案的优点是:一旦您以这种方式准备好了程序,您就可以在以后通过配置更改时钟。但至少需要一次初始代码更改。这可能会对您有所帮助。您可以临时模拟Calendar类以返回所需的内容,然后将其卸载。谢谢,但我无法更改或添加代码,因此我想知道您是否可以使用系统或用户属性来执行此操作。@bazic那么您必须更改系统日期/时间。您需要管理员权限。@Moritz Petersen:同一服务器中还有其他java程序与此相关,如果OP使用(本质上是JSR310的前身),则有一组类似的函数允许您更改时钟。@Clockwork Muse确实,JodaTime提供了接口org.joda.time.DateTimeUtils.MillisProvider
。我很遗憾JSR-310-clock是一个抽象类,而不是一个接口。Stephen Colebourne最近发表声明说,现在为Java8改变这一点已经太晚了。