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

发布于 2024-12-05 01:35:27 字数 76 浏览 0 评论 0原文

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

这给了我实现此功能的想法。

For the effective date support, we need the ability to change the 'current date' to be a future date without changing a server clock in a test environment

give me an ideas to implement this functionality.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

演多会厌 2024-12-12 01:35:27

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

long offset = 0;

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

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

如果您希望这是一个单例或实用程序类,我建议您使用 enum

You need to write your own method to get the time/date.

long offset = 0;

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

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

If you want this to be a singleton or a utility class I suggest you use an enum

似狗非友 2024-12-12 01:35:27

使用假系统时钟。本页示例:

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();
  }

} 

Use a fake system clock. Example from this page:

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

A simple test implementation might look like this:

public final class TestSource implements TimeSource {

  private final AtomicLong curTime = new AtomicLong();

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

} 
放赐 2024-12-12 01:35:27

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

GregorianCalendar now = new GregorianCalendar();

设置您希望的时间:

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

希望这会有所帮助。

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

I assume you are using some similar mechanism to this to get your current time:

GregorianCalendar now = new GregorianCalendar();

To set a time you wish:

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

Hope this helps.

You should look at Joda Time API for all your date and time requirements. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文