Solrj의 날짜와 시간 해석 방법은 매우 위험하다
DateUtil.parseDate()
를 사용하지 않고 문자열을 Date형으로 해석하는 편리한 방법이 있지만, 상당히 위험한 것 같습니다.현재 확인된 현상
Solrj4.10.1을 통해 확인
1. Date 클래스를 toString()으로 출력하는 문자열(EEE MMMd HH ss z yy 형식)은 12시에 이 메서드를 사용할 때 시간 부분이 0으로 변경됩니다.
java
import org.apache.solr.common.util.DateUtil;
public class DateTest {
public static void main(String[] args) throws ParseException {
String dateStr = "Fri Oct 24 12:11:57 JST 2014";
System.out.println(DateUtil.parseDate(dateStr));
}
}
출력 결과
Fri Oct 24 00:11:57 JST 2014
.2. yyyy-MM-ddHss의 문자열은 모두 yyy-MM dd09:00으로 바뀌었습니다.
java
import org.apache.solr.common.util.DateUtil;
public class DateTest {
public static void main(String[] args) throws ParseException {
String dateStr = "2014-10-24 18:00:00";
System.out.println(DateUtil.parseDate(dateStr));
}
}
출력 결과
Fri Oct 24 09:00:00 JST 2014
.설치 확인 후 1.의 이벤트는 EEE MMMd HH sszyy 포맷이'EEE MMd hhh sszyyy'로 시간 부분에서 AM, PM의'hh'를 구분하지 않기 때문이다.
2.왜냐하면 처리할 형식은 다음과 같은 순서에 따라
yyyy-MM-dd'T'HH:mm:ss'Z'
yyyy-MM-dd'T'HH:mm:ss
yyyy-MM-dd
yyyy-MM-dd hh:mm:ss
yyyy-MM-dd HH:mm:ss
EEE MMM d hh:mm:ss z yyyy
EEE MMM d HH:mm:ss yyyy
EEEE, dd-MMM-yy HH:mm:ss zzz
EEE, dd MMM yyyy HH:mm:ss zzz
원인은 yyyy-MM-ddhhss형식(또는 yyyy-MM-ddHss형식)을 처리하기 전에'yyy-MM-dd'형식으로 해석한 것 같다.지금은 Solrj의 날짜와 시간 서비스를 사용하지 않는 것이 좋습니다.
Reference
이 문제에 관하여(Solrj의 날짜와 시간 해석 방법은 매우 위험하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kakimaze/items/49495f91fc71818632d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)