Package nablarch.core.util
Class DateUtil
java.lang.Object
nablarch.core.util.DateUtil
日付ユーティリティ。
- Author:
- Miki Habu
-
Method Summary
Modifier and TypeMethodDescriptionstatic String指定された日付(yyyyMMdd形式)を指定された日数分加減算する。static String指定された日付(yyyyMMdd or yyyyMM形式)を指定された月数分加減算する。static StringformatDate(String date, String pattern) 日付文字列(yyyyMMdd形式)を指定された形式でフォーマットする。static StringformatDate(Date date, String format) このメソッドはThreadContextから取得したロケールを指定してformatDate(Date, String, Locale)を呼び出す。static StringformatDate(Date date, String format, Locale locale) 指定されたフォーマットとロケールを使用して日付を変換する。static Date日付文字列(yyyyMMdd形式)からDateクラスのインスタンスを取得する。static long指定された日付間の日数を取得する。static StringgetMonthEndDate(String date) 指定された日付(yyyyMMdd or yyyyMM形式)の月末日を取得する。static int指定された日付(yyyyMMdd or yyyyMM形式)間の月数を取得する。static StringgetNumbersOnlyFormat(String yyyyMMddFormat) フォーマット文字列から年月日の区切り文字を取り除いた値を返す。static DategetParsedDate(String date, String format) このメソッドはロケールにLocale.getDefault()を使用してgetParsedDate(String, String, Locale)を呼び出す。static DategetParsedDate(String date, String format, Locale locale) static booleanstatic boolean
-
Method Details
-
getDate
日付文字列(yyyyMMdd形式)からDateクラスのインスタンスを取得する。- Parameters:
date- 日付文字列(yyyyMMdd形式)- Returns:
- 日付文字列の日付が設定された、
Dateクラスのインスタンス - Throws:
IllegalArgumentException- 日付文字列のフォーマットが yyyyMMdd形式ではなかった場合
-
formatDate
日付文字列(yyyyMMdd形式)を指定された形式でフォーマットする。- Parameters:
date- フォーマット対象の日付文字列(yyyyMMdd形式)pattern- 日付のフォーマットを記述するパターン(yyyy/MM/ddなど。SimpleDateFormat参照)- Returns:
- フォーマットされた日付文字列
- Throws:
IllegalArgumentException- 日付文字列のフォーマットが yyyyMMdd形式ではなかった場合
-
addDay
指定された日付(yyyyMMdd形式)を指定された日数分加減算する。
負の値が指定された場合は、減算を行う。 例)addDay("19991231", 1) //--> "20000101"- Parameters:
date- 日付文字列(yyyyMMdd形式)days- 加減算する日数(負の値の場合は、減算を行う。)- Returns:
- 計算後の日付文字列(yyyyMMdd形式)
-
addMonth
指定された日付(yyyyMMdd or yyyyMM形式)を指定された月数分加減算する。
負の値が指定された場合は、減算を行う。 例)addMonth("19991231", 1) //--> "20000131"- Parameters:
date- 日付文字列(yyyyMMdd or yyyyMM形式)month- 加減算する月数(負の値の場合は、減算を行う。)- Returns:
- 計算後の日付文字列
-
getDays
指定された日付間の日数を取得する。
例)getDays("19991231", "20000101") //--> 1- Parameters:
dateFrom- 開始日付文字列(yyyyMMdd形式)dateTo- 終了日付文字列(yyyyMMdd形式)- Returns:
- 日数(同一日であれば0、 開始日付文字列 > 終了日付文字列であればマイナス値)
-
getMonths
指定された日付(yyyyMMdd or yyyyMM形式)間の月数を取得する。 例)
DateUtil.getMonths("201102", "201103"); //--> 1- Parameters:
monthFrom- 開始日付文字列(yyyyMMdd or yyyyMM形式)monthTo- 終了日付文字列(yyyyMMdd or yyyyMM形式)- Returns:
- 月数(同一日であれば0、 開始日付文字列 > 終了日付文字列であればマイナス値)
-
getMonthEndDate
指定された日付(yyyyMMdd or yyyyMM形式)の月末日を取得する。- Parameters:
date- 日付(yyyyMMdd or yyyyMM形式)- Returns:
- 指定された日付の月末日
-
isValid
- Parameters:
date- バリデーション対象日付文字列format- フォーマット- Returns:
- dateがformat形式で、実在する日であれば
true - Throws:
IllegalArgumentException- dateがnullか、formatがnullまたは空文字の場合
-
isValid
指定された日付文字列がフォーマットどおりであり、実在する日であることをバリデーションする。
フォーマットにはSimpleDateFormatにて定められたフォーマットを指定する。 例)
//2016年3月31日は存在するため、true。 DateUtil.isValid("20160331", "yyyyMMdd"); //--> true //2016年3月32日は存在しないため、false。 DateUtil.isValid("20160332", "yyyyMMdd"); //--> false- Parameters:
date- バリデーション対象日付文字列format- フォーマットlocale- フォーマットに使用するロケール- Returns:
- dateがformat形式で、実在する日であれば
true - Throws:
IllegalArgumentException- dateがnullか、formatがnullまたは空文字の場合
-
getParsedDate
このメソッドはロケールにLocale.getDefault()を使用してgetParsedDate(String, String, Locale)を呼び出す。- Parameters:
date- パース対象日付文字列format- 日付文字列フォーマット- Returns:
- dateをformat形式でパースした結果の
Dateインスタンス - Throws:
IllegalArgumentException- dateがnullか、formatがnullまたは空文字の場合
-
getParsedDate
@Published(tag="architect") public static Date getParsedDate(String date, String format, Locale locale) dateをformat形式でパースした結果のDateインスタンスを返却する。 dateがformat形式ではない場合、または実在しない日付である場合、nullを返却する。 例)
//正常処理 DateUtil.getParsedDate("20160307160112", "yyyyMMddHHmmss", Locale.JAPANESE); // Mon Mar 07 12:12:12 JST 2016 //20160304(date)の形式が、yyyymm形式でないため、null。 DateUtil.getParsedDate("20160304", "yyyyMM", Locale.JAPANESE); //--> null //2016年3月32日が存在しない日付のため、null。 DateUtil.getParsedDate("20160332", "yyyyMMdd", Locale.JAPANESE); //--> null- Parameters:
date- パース対象日付文字列format- 日付文字列フォーマットlocale- フォーマットに使用するロケール- Returns:
- dateをformat形式でパースした結果の
Dateインスタンス - Throws:
IllegalArgumentException- dateがnullか、formatがnullまたは空文字の場合
-
getNumbersOnlyFormat
フォーマット文字列から年月日の区切り文字を取り除いた値を返す。フォーマットのパターン文字は、y(年)、M(月)、d(月における日)のみ指定可能。 フォーマット文字列に年月日の区切り文字が含まれない場合は
nullを返す。 下記に「フォーマット文字列 //--> 戻り値」形式で例を示す。 "yyyy/MM/dd" //--> "yyyyMMdd" "yyyy-MM-dd" //--> "yyyyMMdd" "MM/dd/yyyy" //--> "MMddyyyy" "yyyyMMdd" //-->null- Parameters:
yyyyMMddFormat- フォーマット文字列- Returns:
- フォーマット文字列から年月日の区切り文字を取り除いた値
-
formatDate
このメソッドはThreadContextから取得したロケールを指定してformatDate(Date, String, Locale)を呼び出す。- Parameters:
date- 日付(null不可)format- フォーマット(null不可)- Returns:
- 変換した値
-
formatDate
@Published(tag="architect") public static String formatDate(Date date, String format, Locale locale) 指定されたフォーマットとロケールを使用して日付を変換する。 指定するフォーマットはSimpleDateFormatの仕様に準拠すること。 例:Date date = Calendar.getInstance().getTime(); //--> 2012/11/13 I18NUtil.formatDate(date, "yyyy/MMM/dd", Locale.JAPANESE); //--> 2012/11/13 I18NUtil.formatDate(date, "dd MMM yyyy", Locale.ENGLISH); //--> 13 Nov 2012
- Parameters:
date- 日付format- フォーマットlocale- ロケール- Returns:
- 変換した値
- Throws:
IllegalArgumentException- 日付、フォーマット、ロケールがnullの場合、または日付の変換に失敗した場合
-