import java.util.Calendar; /** * 記念時刻(年月日時分秒)と現在の時刻の差を計算するクラス。 * @author せぎてつ * @version 1.01 */ public class CalcTimeDifferenceJDK11 implements CalcTimeDifference { private Calendar memorialTime; private int diffDays, diffHours, diffMinutes, diffSeconds; private boolean after; /** * 引数がないコンストラクタ。 * 記念時刻を2000年1月1日0時0分0秒に設定する。 */ public CalcTimeDifferenceJDK11() { this(2000, 0, 1, 0, 0, 0); } /** * 引数に年月日が与えられるコンストラクタ。 * 与えられた年月日の0時0分0秒に設定する。 */ public CalcTimeDifferenceJDK11(int year, int month, int day) { this(year, month, day, 0, 0, 0); } /** * 引数に年月日時分秒が与えられるコンストラクタ。 */ public CalcTimeDifferenceJDK11(int year, int month, int day, int hour, int minute, int second) { memorialTime = Calendar.getInstance(); setMemorialTime(year, month, day, hour, minute, second); } /** * 現在時刻の再設定。 */ public void setCurrentTime() { long timeDiffInMillis = getMemorialTime().getTime().getTime() - Calendar.getInstance().getTime().getTime(); setAfter((timeDiffInMillis > 0) ? false : true); timeDiffInMillis = Math.abs(timeDiffInMillis); if (before()) { timeDiffInMillis += 999; } setDiffDays((int)(timeDiffInMillis / (24 * 3600 * 1000))); timeDiffInMillis %= 24 * 3600 * 1000; setDiffHours((int)(timeDiffInMillis / (3600 * 1000))); timeDiffInMillis %= 3600 * 1000; setDiffMinutes((int)(timeDiffInMillis / (60 * 1000))); timeDiffInMillis %= 60 * 1000; setDiffSeconds((int)(timeDiffInMillis / 1000)); } /** * 記念時刻の設定。 * 与えられた年月日の0時0分0秒に設定する。 */ public void setMemorialTime(int year, int month, int day) { setMemorialTime(year, month, day, 0, 0, 0); } /** * 記念時刻の設定。 */ public void setMemorialTime(int year, int month, int day, int hour, int minute, int second) { memorialTime.set(year, month, day, hour, minute, second); setCurrentTime(); } /** * 記念時刻の取得。 */ protected Calendar getMemorialTime() {return memorialTime;} /** * 記念時刻と現在時刻の差の日数を取り出す。 * @return 差の日数 */ public int getDiffDays() {return diffDays;} /** * 記念時刻と現在時刻の差の時間を取り出す。 * @return 差の時間 */ public int getDiffHours() {return diffHours;} /** * 記念時刻と現在時刻の差の分を取り出す。 * @return 差の分 */ public int getDiffMinutes() {return diffMinutes;} /** * 記念時刻と現在時刻の差の秒を取り出す。 * @return 差の秒 */ public int getDiffSeconds() {return diffSeconds;} /** * 記念時刻と現在時刻の差の日数を設定する。 */ protected void setDiffDays(int diffDays) {this.diffDays = diffDays;} /** * 記念時刻と現在時刻の差の時間を設定する。 */ protected void setDiffHours(int diffHours) {this.diffHours = diffHours;} /** * 記念時刻と現在時刻の差の分を設定する。 */ protected void setDiffMinutes(int diffMinutes) {this.diffMinutes = diffMinutes;} /** * 記念時刻と現在時刻の差の秒を設定する。 */ protected void setDiffSeconds(int diffSeconds) {this.diffSeconds = diffSeconds;} /** * 現在時刻が記念時刻より後か調べる。 * @return 後だったらtrue、前だったらfalse。 */ public boolean after() {return after;} /** * 現在時刻が記念時刻より前か調べる。 * @return 前だったらtrue、後だったらfalse。 */ public boolean before() {return !after;} /** * 現在時刻が記念時刻より前か後か設定する。 */ protected void setAfter(boolean after) {this.after = after;} }