Skip to content

Instantly share code, notes, and snippets.

@kaku87
Last active December 24, 2015 06:59
Show Gist options
  • Save kaku87/6760913 to your computer and use it in GitHub Desktop.
Save kaku87/6760913 to your computer and use it in GitHub Desktop.
月末日付取得
/**
* 月末日付取得<BR>
* 引数で渡された日付の末日日付を返す
*
* @param _dateDate
* 月末日付取得対象日付
* @return Date 該当月の月末日付
* @exception SystemException
* @throws SystemException
*/
public static Date getEndMonth(Date _dateDate) throws SystemException {
// ローカル変数宣言//
Date dateRet_ = null; // 返却日付格納用
long lngYear_ = 0; // 年格納用
long lngMonth_ = 0; // 月格納用
long lngEndDay_ = 0; // 月末日取得用
String strDate_ = null; // 対象日付の文字列変換用
StringBuffer strEndDate_ = null; // 返却日付の文字列格納用
try {
// 1.引数で渡された月の月末日を取得する
// 1.1.日付フォーマット変換関数で、対象日付を文字列(yyyy/MM/dd)に変換する
strDate_ = toDateFormat(_dateDate, DATE_FORMAT_LONG);
// 1.2.対象日付の年月を取得する
lngYear_ = Long.parseLong(strDate_.substring(0, 4));
lngMonth_ = Long.parseLong(strDate_.substring(5, 7));
// 1.3.オブジェクトを生成し、引数の日付を変数に設定する
calObject = Calendar.getInstance();
calObject.setTime(_dateDate);
// 1.4.月末日を取得する
lngEndDay_ = calObject.getActualMaximum(Calendar.DATE);
// 1.5.うるう年の計算を行う
if (lngMonth_ == 2 && lngYear_ % 4 == 0 && lngYear_ % 100 == 0 && lngYear_ % 400 != 0) {
// /1)100で割り切れる場合、400でも割り切れる時だけうるう年とする
lngEndDay_ = lngEndDay_ - 1;
}
// 2.返却日付を取得する
// 2.1.引数の年月と月末日を組み立てる
strEndDate_ = new StringBuffer();
strEndDate_.append(strDate_.substring(0, 8));
strEndDate_.append(String.valueOf(lngEndDay_));
// 2.2.文字列の月初日付を日付型に変換する
dateRet_ = toDateType(strEndDate_.toString());
} catch (Exception e) {
// 3.例外が発生した場合
// 3.1. NULLを返却する
dateRet_ = null;
}
// 4.月末日付を返す
return dateRet_;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment