기준 API를 사용하여 로그인 한 사용자의 현재 날짜 (자신의 시간대에 따라)와 테이블 열을 비교하려고합니다.Java에서 Criteria Builder API를 사용하는 날짜 비교
하지만 사용자에 대해 계산 한 현지 날짜 중 표현을 가져올 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?
public void checkTaskCategory(TaskCriteria criteria, CriteriaBuilder cb, CriteriaQuery<Task> q, Root<Task> task, List<Predicate> predicates) {
if (StringUtils.isNotBlank(criteria.getCategory())) {
LocalDate currentDateForUserTimezone = LocalDateTime.now(ZoneId.of("Pacific/Pago_Pago")).toLocalDate();
if (StringUtils.equalsIgnoreCase(TaskConstants.TASK_OVERDUE, criteria.getCategory())) {
predicates.add(cb.greaterThan(cb.currentDate(), task.<Date>get(TaskConstants.DUE_DATE)));
predicates.add(cb.notEqual(task.get("status"), getStatus(Status.Value.DONE.toString()).getId()));
q.orderBy(cb.asc(task.get(TaskConstants.DUE_DATE)));
}
}
}
내가 함께 cb.currentDate()
를 교체하려면 내 계정으로 시간대를 고려하지 않습니다 cb.currentDate
이후 비교를 위해 currentDateForUserTimezone
을 계산. 그것을 어떻게 성취 할 수 있습니까?
@lonut 알고 계십니까? –
질문과 관련이 없지만'LocalDate.now (ZoneId.of ("Pacific/Pago_Pago"))'를 사용할 수 있습니다. LocalDateTime.now (ZoneId.of ("Pacific/Pago_Pago"))와 동일하지만 (보다 짧습니다.) toLocalDate()' –
@ Hugo .. 감사합니다. –