Class DateUtil

java.lang.Object
nablarch.core.util.DateUtil

public final class DateUtil extends Object
日付ユーティリティ。
Author:
Miki Habu
  • Method Details

    • getDate

      @Published public static Date getDate(String date)
      日付文字列(yyyyMMdd形式)からDateクラスのインスタンスを取得する。
      Parameters:
      date - 日付文字列(yyyyMMdd形式)
      Returns:
      日付文字列の日付が設定された、Dateクラスのインスタンス
      Throws:
      IllegalArgumentException - 日付文字列のフォーマットが yyyyMMdd形式ではなかった場合
    • formatDate

      @Published public static String formatDate(String date, String pattern)
      日付文字列(yyyyMMdd形式)を指定された形式でフォーマットする。
      Parameters:
      date - フォーマット対象の日付文字列(yyyyMMdd形式)
      pattern - 日付のフォーマットを記述するパターン(yyyy/MM/ddなど。SimpleDateFormat参照)
      Returns:
      フォーマットされた日付文字列
      Throws:
      IllegalArgumentException - 日付文字列のフォーマットが yyyyMMdd形式ではなかった場合
    • addDay

      @Published public static String addDay(String date, int days)
      指定された日付(yyyyMMdd形式)を指定された日数分加減算する。

      負の値が指定された場合は、減算を行う。

      例)addDay("19991231", 1) //--> "20000101"

      Parameters:
      date - 日付文字列(yyyyMMdd形式)
      days - 加減算する日数(負の値の場合は、減算を行う。)
      Returns:
      計算後の日付文字列(yyyyMMdd形式)
    • addMonth

      @Published public static String addMonth(String date, int month)
      指定された日付(yyyyMMdd or yyyyMM形式)を指定された月数分加減算する。

      負の値が指定された場合は、減算を行う。

      例)addMonth("19991231", 1) //--> "20000131"

      Parameters:
      date - 日付文字列(yyyyMMdd or yyyyMM形式)
      month - 加減算する月数(負の値の場合は、減算を行う。)
      Returns:
      計算後の日付文字列
    • getDays

      @Published public static long getDays(String dateFrom, String dateTo)
      指定された日付間の日数を取得する。

      例)getDays("19991231", "20000101") //--> 1

      Parameters:
      dateFrom - 開始日付文字列(yyyyMMdd形式)
      dateTo - 終了日付文字列(yyyyMMdd形式)
      Returns:
      日数(同一日であれば0、 開始日付文字列 > 終了日付文字列であればマイナス値)
    • getMonths

      @Published public static int getMonths(String monthFrom, String monthTo)
      指定された日付(yyyyMMdd or yyyyMM形式)間の月数を取得する。

      例)
      DateUtil.getMonths("201102", "201103"); //--> 1

      Parameters:
      monthFrom - 開始日付文字列(yyyyMMdd or yyyyMM形式)
      monthTo - 終了日付文字列(yyyyMMdd or yyyyMM形式)
      Returns:
      月数(同一日であれば0、 開始日付文字列 > 終了日付文字列であればマイナス値)
    • getMonthEndDate

      @Published public static String getMonthEndDate(String date)
      指定された日付(yyyyMMdd or yyyyMM形式)の月末日を取得する。
      Parameters:
      date - 日付(yyyyMMdd or yyyyMM形式)
      Returns:
      指定された日付の月末日
    • isValid

      @Published public static boolean isValid(String date, String format)
      このメソッドはロケールにLocale.getDefault()を使用して、isValid(String, String, Locale)を呼び出す。
      Parameters:
      date - バリデーション対象日付文字列
      format - フォーマット
      Returns:
      dateがformat形式で、実在する日であればtrue
      Throws:
      IllegalArgumentException - dateがnullか、formatがnullまたは空文字の場合
    • isValid

      @Published public static boolean isValid(String date, String format, Locale locale)
      指定された日付文字列がフォーマットどおりであり、実在する日であることをバリデーションする。
      フォーマットには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

      @Published(tag="architect") public static Date getParsedDate(String date, String format)
      このメソッドはロケールに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

      @Published(tag="architect") public static String getNumbersOnlyFormat(String yyyyMMddFormat)
      フォーマット文字列から年月日の区切り文字を取り除いた値を返す。
       フォーマットのパターン文字は、y(年)、M(月)、d(月における日)のみ指定可能。
       
       フォーマット文字列に年月日の区切り文字が含まれない場合はnullを返す。
       下記に「フォーマット文字列 //--> 戻り値」形式で例を示す。
       
       "yyyy/MM/dd" //--> "yyyyMMdd"
       "yyyy-MM-dd" //--> "yyyyMMdd"
       "MM/dd/yyyy" //--> "MMddyyyy"
       "yyyyMMdd"   //--> null
       
       
      Parameters:
      yyyyMMddFormat - フォーマット文字列
      Returns:
      フォーマット文字列から年月日の区切り文字を取り除いた値
    • formatDate

      @Published(tag="architect") public static String formatDate(Date date, String format)
      このメソッドは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の場合、または日付の変換に失敗した場合