자바 : 현재 날짜가 특정 날짜 범위에 있는지 확인

마틴 브 라벨

다음 문제로 고생하고 있습니다.

내 앱에서 현재 날짜 시간 LocalDateTime.now()이 특정 요일 범위 내에 있는지 확인하고 싶습니다 . 금요일일요일 사이에 있다고 가정 합니다.

예:

Datetime 창은 금요일 20:00 부터 일요일 20:00까지 입니다. 나는에 현재 날짜를 확인하면 목요일22 : 00 *를, 대답은해야 false하지만 ** 토요일에 검사시 에서 8시 , 대답은해야한다 true.

메서드를 사용 하고 시간과 분을 별도로 비교하는 API의 DayOfWeek클래스 로이 작업을 수행 할 수 있지만 더 나은 방법이 있는지, 특히 날짜 범위가 2 주 (예 : 금요일 부터 월요일까지)걸쳐 있는지 알고 싶습니다. 다음 주)?java.timecompareTo()

조언이나 도움에 미리 감사드립니다.

안드레아스

a LocalDateTimeDayOfWeek+ LocalTime비교 하거나 두 DayOfWeek+ LocalTime사이에 있는지 확인 하고 싶기 때문에 도우미 클래스가 좋을 수 있습니다.

public final class DayOfWeekTimeRange {
    private final DayOfWeek fromDay;
    private final LocalTime fromTime;
    private final DayOfWeek toDay;
    private final LocalTime toTime;
    private final boolean   inverted;
    public DayOfWeekTimeRange(DayOfWeek fromDay, LocalTime fromTime, DayOfWeek toDay, LocalTime toTime) {
        this.fromDay = fromDay;
        this.fromTime = fromTime;
        this.toDay = toDay;
        this.toTime = toTime;
        this.inverted = compare(this.fromDay, this.fromTime, this.toDay, this.toTime) > 0;
    }
    public boolean inRange(LocalDateTime dateTime) {
        return inRange(dateTime.getDayOfWeek(), dateTime.toLocalTime());
    }
    public boolean inRange(DayOfWeek day, LocalTime time) {
        boolean fromOk = compare(day, time, this.fromDay, this.fromTime) >= 0; // Lower-inclusive
        boolean toOk   = compare(day, time, this.toDay  , this.toTime  ) <  0; // Upper-exclusive
        return (this.inverted ? fromOk || toOk : fromOk && toOk);
    }
    private static int compare(DayOfWeek day1, LocalTime time1, DayOfWeek day2, LocalTime time2) {
        int cmp = day1.compareTo(day2);
        if (cmp == 0)
            cmp = time1.compareTo(time2);
        return cmp;
    }
}

테스트

// Fri 10:00 PM  to  Sun 10:00 PM
DayOfWeekTimeRange range = new DayOfWeekTimeRange(DayOfWeek.FRIDAY, LocalTime.of(20,0), DayOfWeek.SUNDAY, LocalTime.of(20,0));
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 12, 22, 0))); // Thu Nov. 12 2015 at 10:00 PM
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 14,  8, 0))); // Sat Nov. 14 2015 at  8:00 AM
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 16, 15, 0))); // Mon Nov. 16 2015 at  3:00 PM

// Fri 10:00 PM  to  Mon 10:00 PM
range = new DayOfWeekTimeRange(DayOfWeek.FRIDAY, LocalTime.of(20,0), DayOfWeek.MONDAY, LocalTime.of(20,0));
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 12, 22, 0))); // Thu Nov. 12 2015 at 10:00 PM
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 14,  8, 0))); // Sat Nov. 14 2015 at  8:00 AM
System.out.println(range.inRange(LocalDateTime.of(2015, 11, 16, 15, 0))); // Mon Nov. 16 2015 at  3:00 PM

산출

false
true
false
false
true
true

대안

물론 DayOfWeek+를 사용 하여 많은 처리를 수행하는 경우 두 가지를 결합 LocalTime하여 자신의 LocalDayOfWeekTime클래스를 구현하는 것을 고려해야 합니다. 같은 방식 LocalDateTime으로 단순히 결합 된 LocalDate+ LocalTime(즉, 직접 확인)입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 및 현재 날짜 시간이 특정 범위에 있는지 확인

분류에서Dev

R-문자열에 특정 날짜 범위 내의 날짜가 포함되어 있는지 확인

분류에서Dev

현재 날짜 문자열이 다른 두 날짜의 범위 내에 있거나 밖에 있는지 확인하십시오.

분류에서Dev

날짜가 지정된 날짜 범위 내에 있는지 확인하는 방법

분류에서Dev

날짜가 범위 날짜에 속하는지 확인

분류에서Dev

현재 날짜가 두 날짜 사이인지 확인 Oracle SQL

분류에서Dev

사용자 지정 개체 배열에 특정 날짜의 개체가 포함되어 있는지 확인

분류에서Dev

날짜가 특정 달인지 확인

분류에서Dev

PHP : 예약 된 날짜가 지정된 날짜 범위에 속하는지 확인

분류에서Dev

현재 날짜 / 시간이 가변 시간대에서 설정된 날짜 / 시간을 지난 지 어떻게 확인할 수 있습니까?

분류에서Dev

현재 날짜가 1 년을 포함하지 않는 두 날짜 범위 내 / 외인지 어떻게 확인할 수 있습니까?

분류에서Dev

특정 기간 사이에 날짜가 있는지 확인하는 방법 (Excel)

분류에서Dev

현재 날짜부터 내일과 모레 날짜가있는 DB에서 특정 행을 선택합니다.

분류에서Dev

날짜 범위 사이에 DAYOFWEEK ()가 있는지 확인

분류에서Dev

날짜 존재하지에 0을 반환하고, 특정 날짜가 현재 얼마나 많은 행 COUNT MYSQL

분류에서Dev

날짜 범위를 비교할 수 있도록 현재 날짜 필드에 날짜를 추가하는 방법

분류에서Dev

사용자 정의 위젯 필드에 현재 날짜 추가

분류에서Dev

하나의 날짜가 현재 날짜와 가까운 지 확인하기위한 MySQL 쿼리

분류에서Dev

날짜 목록에 날짜가 있는지 확인

분류에서Dev

날짜가 두 날짜 사이에 있는지 확인-Excel

분류에서Dev

날짜 문자열이 날짜 범위 내에 있는지 확인하는 Spotfire TERR 스크립트

분류에서Dev

자바 스크립트에서 현재 날짜 이전 인 경우 날짜를 찾는 방법

분류에서Dev

현재 연도의 최근 날짜와 현재 날짜의 차이가 조인 범위 내에있는 SQL 쿼리

분류에서Dev

Microsoft Excel에서 날짜가 지정된 범위 내에 있는지 확인하는 방법

분류에서Dev

현재 날짜 / 시간이 일정 내에 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

주어진 시간 슬롯에 현재 시간이 있는지 확인하고 주어진 날짜 배열 사이에 날짜가 있는지 찾는 방법

분류에서Dev

datetime을 입력하여 날짜가 현재 날짜인지 미래 날짜인지 확인

분류에서Dev

postgres에서 날짜 정규화-현재까지 문자

분류에서Dev

주 날짜 범위 문자열에서 날짜를 추출하고 다음 날짜 범위를 인쇄하기 위해 7 일을 추가하는 매크로

Related 관련 기사

  1. 1

    Python 및 현재 날짜 시간이 특정 범위에 있는지 확인

  2. 2

    R-문자열에 특정 날짜 범위 내의 날짜가 포함되어 있는지 확인

  3. 3

    현재 날짜 문자열이 다른 두 날짜의 범위 내에 있거나 밖에 있는지 확인하십시오.

  4. 4

    날짜가 지정된 날짜 범위 내에 있는지 확인하는 방법

  5. 5

    날짜가 범위 날짜에 속하는지 확인

  6. 6

    현재 날짜가 두 날짜 사이인지 확인 Oracle SQL

  7. 7

    사용자 지정 개체 배열에 특정 날짜의 개체가 포함되어 있는지 확인

  8. 8

    날짜가 특정 달인지 확인

  9. 9

    PHP : 예약 된 날짜가 지정된 날짜 범위에 속하는지 확인

  10. 10

    현재 날짜 / 시간이 가변 시간대에서 설정된 날짜 / 시간을 지난 지 어떻게 확인할 수 있습니까?

  11. 11

    현재 날짜가 1 년을 포함하지 않는 두 날짜 범위 내 / 외인지 어떻게 확인할 수 있습니까?

  12. 12

    특정 기간 사이에 날짜가 있는지 확인하는 방법 (Excel)

  13. 13

    현재 날짜부터 내일과 모레 날짜가있는 DB에서 특정 행을 선택합니다.

  14. 14

    날짜 범위 사이에 DAYOFWEEK ()가 있는지 확인

  15. 15

    날짜 존재하지에 0을 반환하고, 특정 날짜가 현재 얼마나 많은 행 COUNT MYSQL

  16. 16

    날짜 범위를 비교할 수 있도록 현재 날짜 필드에 날짜를 추가하는 방법

  17. 17

    사용자 정의 위젯 필드에 현재 날짜 추가

  18. 18

    하나의 날짜가 현재 날짜와 가까운 지 확인하기위한 MySQL 쿼리

  19. 19

    날짜 목록에 날짜가 있는지 확인

  20. 20

    날짜가 두 날짜 사이에 있는지 확인-Excel

  21. 21

    날짜 문자열이 날짜 범위 내에 있는지 확인하는 Spotfire TERR 스크립트

  22. 22

    자바 스크립트에서 현재 날짜 이전 인 경우 날짜를 찾는 방법

  23. 23

    현재 연도의 최근 날짜와 현재 날짜의 차이가 조인 범위 내에있는 SQL 쿼리

  24. 24

    Microsoft Excel에서 날짜가 지정된 범위 내에 있는지 확인하는 방법

  25. 25

    현재 날짜 / 시간이 일정 내에 있는지 확인하는 방법은 무엇입니까?

  26. 26

    주어진 시간 슬롯에 현재 시간이 있는지 확인하고 주어진 날짜 배열 사이에 날짜가 있는지 찾는 방법

  27. 27

    datetime을 입력하여 날짜가 현재 날짜인지 미래 날짜인지 확인

  28. 28

    postgres에서 날짜 정규화-현재까지 문자

  29. 29

    주 날짜 범위 문자열에서 날짜를 추출하고 다음 날짜 범위를 인쇄하기 위해 7 일을 추가하는 매크로

뜨겁다태그

보관