現在リニューアル中 → 旧サイトはこちら

日付チェック

Calendarクラスのsetメソッドとgetメソッドを使用。

public static boolean checkDate(int year, int month, int day) { Calendar cal = Calendar.getInstance(); cal.set(year, month-1, day); if (cal.get(Calendar.YEAR) == year && cal.get(Calendar.MONTH) == (month - 1) && cal.get(Calendar.DATE) == day) { return true; } else { return false; } }

日数の加算・減算

Calendarクラスのadd()メッソドを使用。

public static Date addDate(int year, int month, int day, int diff ) { Calendar cal = Calendar.getInstance(); cal.set(year, month-1, day); cal.add(Calendar.DATE, diff); //diffは加算・減算する日数 return cal.getTime(); }

日数差

DateクラスのgetTime()メソッドよりシステム経過秒を求め、その差より日数差を求める。

public static int getDiffDays(Date date1, Date date2) { long diff = date1.getTime() - date2.getTime(); return (int) (diff/1000/60/60/24); }

西暦/和暦の変換

西暦から和暦に変換

public static String getJpEra(int year, int month, int day, boolean check) { //和暦変換テーブル String warekiTable[][] = { {"18680908","19120729", "M"}, //明治 {"19120730","19261224", "T"}, //大正 {"19261225","19890107", "S"}, //昭和 {"19890108","99991231", "H"}}; //平成 /* //1900年以前をエラーとする場合は、コメントをはずす。 if (year < 1900) { return null; } */ //日付の妥当性をチェックする if (!checkDate(year, month, day)) { if (!check) { return null; } else { Calendar cal = Calendar.getInstance(); cal.set(year, month-1, day); year = cal.get(Calendar.YEAR); month = cal.get(Calendar.MONTH) + 1; day = cal.get(Calendar.DATE); } } //YYYYMMDDの形式に変換する NumberFormat frm = new DecimalFormat("00"); String ymd = "" + year + frm.format(month) + frm.format(day); //暦変換テーブルをサーチする int i = 0; for (i=0; i<warekiTable.length; i++) { //当該西暦が開始年以上で最終年以下ならbreak if (ymd.compareTo(warekiTable[i][0]) >= 0 && ymd.compareTo(warekiTable[i][1]) <= 0) { break; } } //暦テーブルに該当レコードがあれば、和暦年を計算する if (i < warekiTable.length) { int jpYear = year - Integer.parseInt(warekiTable[i][0].substring(0,4)) + 1; //和号+和暦年を返す return warekiTable[i][2] + jpYear + "/" + month + "/" + day; } else { return null; } }

和暦から西暦に変換

public static String getAdEra(String gengou, int year, int month, int day, boolean check) { //和暦変換テーブル String warekiTable[][] = { {"18680908","19120729", "M"}, //明治 {"19120730","19261224", "T"}, //大正 {"19261225","19890107", "S"}, //昭和 {"19890108","99991231", "H"}}; //平成 //年が1未満の場合はエラー if (year < 1) { return null; } //元号で和暦テーブルを検索する int i; for (i=0; i<warekiTable.length; i++) { //元号が一致したらbreak if (gengou.equals(warekiTable[i][2] )) { break; } } //元号が一致しない場合はエラー if (i >= warekiTable.length) { return null; } //西暦年を計算する int adYear = Integer.parseInt(warekiTable[i][0].substring(0,4)) + year -1; /* //1900年未満はエラーとする場合は、コメントをはずす。 if ( adYear < 1900) { return null; } */ //日付の妥当性をチェックする if (!checkDate(adYear, month, day)) { if (!check) { return null; } else { Calendar cal = Calendar.getInstance(); cal.set(adYear, month-1, day); adYear = cal.get(Calendar.YEAR); month = cal.get(Calendar.MONTH) + 1; day = cal.get(Calendar.DATE); } } // YYYY/MM/DDの形式に変換して、返す NumberFormat frm = new DecimalFormat("00"); return adYear + "/" + frm.format(month) + "/" + frm.format(day); }

年齢の算出

public static int getAge(int year, int month, int day) { //今日のカレンダー Calendar now = Calendar.getInstance(); //誕生日のカレンダー Calendar birthDay = DateUtil.getCalendar(year, month, day); //概算年齢 = 現在年 - 誕生年 int age = now.get(Calendar.YEAR) - birthDay.get(Calendar.YEAR); //今年の誕生月を過ぎていない場合 if (now.get(Calendar.MONTH) < birthDay.get(Calendar.MONTH)) { //概算年齢から1引く age--; //今日が誕生月の場合 } else if (now.get(Calendar.MONTH) == birthDay.get(Calendar.MONTH)){ //誕生日を過ぎていない場合 if (now.get(Calendar.DAY_OF_MONTH) < birthDay.get(Calendar.DAY_OF_MONTH)) { //概算年齢から1引く age--; } } //誕生日が今日より大きければエラー if (age < 0) { return -1; } else { return age; } }

干支の取得

public static String getEto(int year) { //十二支文字列テーブル String etoTable[] = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}; //西暦4年が「子年」なので、西暦年に8を加算して12の剰余をとる int i = (year + 8) % 12; return etoTable[i]; }