/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: DateTime.java,v 1.1 2005/02/28 13:25:47 rampil Exp $
 */
package org.logical_paradox.common.util;

import java.sql.Timestamp;

/**
 * 日付操作に関するユーティリティ
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class DateTime {
	/** 日付補正値(msec) */
	private long adjust_ = 0;
	/** 日時補正なしの日付操作クラス */
	private static final DateTime current_ = new DateTime(0);

	/**
	 * コンストラクタ
	 */
	protected DateTime(long adjust) {
		adjust_ = adjust;
	}
	/**
	 * 日付操作ユーティリティのインスタンスを返す
	 * 日時補正なしのものを返す
	 * @return 日時操作ユーティリティ
	 */
	public static final DateTime getInstance() {
		return current_;
	}
	/**
	 * 日付操作ユーティリティのインスタンスを返す
	 * 指定msecで補正される．プラス値は現在日時よりプラス方向に，マイナス値は
	 * 現在日時よりマイナス方向に補正される
	 * @param tim 日時補正(msec)
	 * @return 日付操作ユーティリティ
	 */
	public static final DateTime getInstance(long tim) {
		return new DateTime(tim - System.currentTimeMillis());
	}
	/**
	 * 現在日時を返す
	 * @return 現在日時(msec)
	 */
	public long currentTimeInMillis() {
		return System.currentTimeMillis() + adjust_;
	}
	/**
	 * 現在日時を返す
	 * @return 現在日時
	 */
	public Timestamp getCurrentTime() {
		return new Timestamp(currentTimeInMillis());
	}
}
