Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java伪系统时钟启动_Java_Date - Fatal编程技术网

Java伪系统时钟启动

Java伪系统时钟启动,java,date,Java,Date,为了解决这个问题,我需要在不接触代码的情况下更改某个java程序的系统时钟,以便: calendar.getinstance().get(calendar.year) = 2013 是否可以通过启动配置设置变量 谢谢 编辑:抱歉,我想将当前年份模拟为2013年如果您在Linux上,您可以尝试使用库来伪造时间: 我从未尝试过这一点,我不知道这是否适用于Java。首先,如果没有管理员权限,就不可能在操作系统级别设置系统时钟。这也会影响机器上运行的所有软件。但是你只想为一个程序改变时钟。因此,当您拒

为了解决这个问题,我需要在不接触代码的情况下更改某个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改变这一点已经太晚了。