繁体   English   中英

在Java中更改当前日期而不更改服务器时钟

[英]Change current Date without changing a server clock In Java

为了获得有效的日期支持,我们需要能够将“当前日期”更改为将来的日期,而无需在测试环境中更改服务器时钟

给我一个实现此功能的想法。

使用伪造的系统时钟 此页面上的示例:

public interface TimeSource {
  /** Return the system time. */  
  long currentTimeMillis();
} 

一个简单的测试实现可能看起来像这样:

public final class TestSource implements TimeSource {

  private final AtomicLong curTime = new AtomicLong();

  public long currentTimeMillis() {
    return curTime.incrementAndGet();
  }

} 

您需要编写自己的方法来获取时间/日期。

long offset = 0;

public long currentTimeMillis() {
    return System.currentTimeMillis() + offset;
}

public void setOffset(long offset) {
    this.offset = offset;
}

如果您希望将其作为单例或实用程序类,建议您使用一个enum

我假设您正在使用与此类似的机制来获取当前时间:

GregorianCalendar now = new GregorianCalendar();

设置您希望的时间:

GregorianCalendar later = new GregorianCalendar();
later.set(Calendar.DAY, 23);
later.set(Calendar.HOUR, 2);

希望这可以帮助。

您应该查看J oda Time API的所有日期和时间要求。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM