[英]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.