SystemUtils

Dateクラスの派生クラスを作ろうかとも思ったけど、こっちのほうが使い回しがきくかなぁと。

public final class SystemUtils {

    private static long offsetCurrentTimeMillis;
    private static long fixCurrentTimeMillis;

    private SystemUtils() {}

    /**
     * {@link System#currentTimeMillis()}の代替メソッド。<br/>
     * テストなどで一時的にシステム日付を変更したい場合に使用する。<br/>
     * fixCurrentTimeMillisがゼロでなければその値を返す。<br/>
     * fixCurrentTimeMillisがゼロであればシステムの現在日時にoffsetCurrentTimeMillisを足した値を返す。<br/>
     * @return
     */
    public static long currentTimeMillis() {
        return fixCurrentTimeMillis != 0 ? fixCurrentTimeMillis : System.currentTimeMillis() + offsetCurrentTimeMillis;
    }

    /**
     * システムの現在日時からのオフセットミリ秒
     * @param offsetCurrentTimeMillis
     */
    public static void setOffsetCurrentTimeMillis(long offsetCurrentTimeMillis) {
        SystemUtils.offsetCurrentTimeMillis = offsetCurrentTimeMillis;
    }

    /**
     * システムの現在日時からのオフセットミリ秒
     * @return
     */
    public static long getOffsetCurrentTimeMillis() {
        return offsetCurrentTimeMillis;
    }

    /**
     * システムの現在日時の代わりに使うミリ秒
     * @param fixCurrentTimeMillis
     */
    public static void setFixCurrentTimeMillis(long fixCurrentTimeMillis) {
        SystemUtils.fixCurrentTimeMillis = fixCurrentTimeMillis;
    }

    /**
     * システムの現在日時の代わりに使うミリ秒
     * @return
     */
    public static long getFixCurrentTimeMillis() {
        return fixCurrentTimeMillis;
    }

}