Изменить текущую дату без изменения часов сервера в Java - PullRequest
0 голосов
/ 19 сентября 2011

Для поддержки эффективной даты нам нужна возможность изменить текущую дату на будущую без изменения часов сервера в тестовой среде.

дайте мне идеи для реализации этой функциональности.

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

Использовать поддельные системные часы .Пример с этой страницы:

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

} 
2 голосов
/ 19 сентября 2011

Вам нужно написать свой собственный метод, чтобы получить время / дату.

long offset = 0;

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

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

Если вы хотите, чтобы это был одноэлементный или служебный класс, я предлагаю вам использовать enum

0 голосов
/ 19 сентября 2011

Я предполагаю, что вы используете какой-то механизм, аналогичный этому, чтобы получить текущее время:

GregorianCalendar now = new GregorianCalendar();

Чтобы установить желаемое время:

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

Надеюсь, это поможет.

Вы должны посмотреть на J oda Time API для всех ваших требований к дате и времени. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...