public class DateComparisonUsingLocalDate {

  LocalDate now = LocalDate.now();
  String beginningOfMonth =
      now.withDayOfMonth(1).format(DateTimeFormatter.ofPattern("MM/dd/yyyy", Locale.US));
  String today = now.format(DateTimeFormatter.ofPattern("MM/dd/yyyy", Locale.US));
  String yesterday = now.minusDays(1).format(DateTimeFormatter.ofPattern("MM/dd/yyyy", Locale.US));
  SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

  void checkIfSameDay() throws Exception {
    String startDateStr = "03/03/2011";
    String endDateStr = "03/03/2011";
    Date endDate = formatter.parse(endDateStr);

    boolean isSameDay;
    isSameDay =
        DateUtils.isSameDay(formatter.parse(beginningOfMonth), formatter.parse(startDateStr));
    System.out.println("==1==" + isSameDay);
    isSameDay = DateUtils.isSameDay(formatter.parse(yesterday), endDate);
    System.out.println("==2==" + isSameDay);

    isSameDay = DateUtils.isSameDay(formatter.parse(yesterday), formatter.parse(startDateStr));
    System.out.println("==3==" + isSameDay);
    isSameDay = DateUtils.isSameDay(formatter.parse(yesterday), endDate);
    System.out.println("==4==" + isSameDay);
  }
}
Example #2
0
  /**
   * 指定された日と曜日の組み合わせのうち、最も今日に近い過去日を検索します。
   *
   * @param dayOfMonth 日
   * @param dayOfWeek 曜日
   * @return 検索された日
   */
  public static LocalDate lookForRecentDayOf(int dayOfMonth, DayOfWeek dayOfWeek) {

    LocalDate now = LocalDate.now();

    //		return Stream.iterate(now.withDayOfMonth(1), date -> date.minusMonths(1))    //
    // 本日の年月初日から、一月ずつ遡っていくストリームを生成する
    //			.filter(date -> checkLastDate(date, dayOfMonth))                         //
    // 末日が引数日より小さい月をフィルター
    //			.filter(date -> check(date, dayOfMonth, dayOfWeek))                      //
    // 該当日の曜日・過去日でないかをチェック
    //			.findFirst()                                                             // 最初の1件を探索し返却
    //			.get();

    return Stream.iterate(
            now.withDayOfMonth(1), date -> date.minusMonths(1)) // 本日の年月初日から、一月ずつ遡っていくストリームを生成する
        .filter(date -> date.lengthOfMonth() >= dayOfMonth) // 月末日が対象引数日以上の月を選択
        .map(date -> date.withDayOfMonth(dayOfMonth)) // 年月初日から引数日にマップ
        .filter(date -> date.getDayOfWeek().equals(dayOfWeek)) // 引数曜日と同じ日を選択
        .filter(date -> date.isBefore(now)) // 過去日を選択
        .findFirst() // 最初を選択し返却
        .get();
  }