package junkutil.common;

import java.util.Calendar;
import java.util.Date;

/**
 * 日付を操作するクラス
 * @author Hiroyuki Shiota
 */
public class DateUtil {

	private DateUtil() {
	}

	public static String dateDiff(Date date) {
		return dateDiff(Calendar.getInstance().getTime(), date);
	}

	public static String dateDiff(Date now, Date date) {
		Calendar nowCal = Calendar.getInstance();
		nowCal.setTime(now);
		Calendar dateCal = Calendar.getInstance();
		dateCal.setTime(date);

		// long型の差分（ミリ秒）
		long diffTime = nowCal.getTimeInMillis() - dateCal.getTimeInMillis();
		if (diffTime < 0) {
			return "0秒前";
		}
		// 秒
		long second = diffTime / 1000;
		if (second < 60) {
			return second + "秒前";
		}
		// 分
		long minute = second / 60;
		if (minute < 60) {
			return minute + "分前";
		}
		// 時
		long hour = minute / 60;
		if (hour < 24) {
			return hour + "時間前";
		}
		// 日
		long day = hour / 24;
		if (day <= 28) {
			return day + "日前";
		}
		// 30日以上の場合
		// 月＋1
		dateCal.add(Calendar.MONDAY, 1);
		if (dateCal.after(nowCal)) {
			return day + "日前"; // 一ヶ月以内
		}
		dateCal.setTime(date); // 日付のリセット
		dateCal.add(Calendar.MONDAY, 12); // 12ヶ月
		if (dateCal.after(nowCal)) {// 一年（12ヶ月）以内
			for (int i = 11; i >= 1; i--) {
				dateCal.setTime(date); // 日付のリセット
				dateCal.add(Calendar.MONDAY, i);
				if (dateCal.before(nowCal)) {
					return i + "ヶ月前";
				}
			}
		}
		//年
		long year = day / 365;
		return year + "年前"; // 1年前
	}
}