2016-08-17 2 views
1

timestamp (내 회사의 필드)이 특정 개월 수보다 오래되었는지 테스트하려고합니다.타임 스탬프가 특정 개월 수보다 오래되었는지 확인하는 방법은 무엇입니까?

if(person.getBirthday().before(Timestamp.valueOf(String.valueOf(LocalDateTime.now().minusMonths(12)){ 
    //do something 
} 

참고 : 생일이 timestamp 필드와 LocalDateTime은 다음과 같습니다

나의 현재 코드는

:이 코드는 나에게 오류을주고 있는지 org.joda.time.LocalDateTime

문제

Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:130) 
Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] 
    at java.sql.Timestamp.valueOf(Timestamp.java:202) 

다른 방법으로 타임 스탬프가 특정 번호보다 오래되었는지 확인할 수 있습니까? F 개월? 여기

답변

4

:

Timestamp.valueOf(String.valueOf(LocalDateTime.now() [...]) 

당신은 문자열에 LocalDateTime (joda에서 시간) 변환 (java.sql.Timestamp에서) Timestamp.valueOf을 기대하는 그것을 구문 분석 할 수 있도록하지만 그들은 같은 날짜 형식을 사용하지 마십시오.

LocalDateTime을 타임 스탬프 (즉 밀리 초 수)로 변환 한 다음이 시점부터 비교해야합니다.

예 :

long timestamp = LocalDateTime.now().minusMonths(12).toDateTime().getMillis() 

편집 :

그럼 당신이 만들 수있는 새로운이 long 값에서 TimestampTimestamp.before(Timestamp)를 사용하여 비교할 :

if(person.getBirthday().before(new Timestamp(timestamp)) { 
    [...] 
} 
+0

감사합니다, 또한 사용하여 비교하는 방법을 보여주십시오 timestamp.before(), .before() 메서드가 매개 변수로 오래 걸릴 수 있다고 생각지 않습니다. – java123999

+0

@ java123999 아니요, 긴 값을 사용하여 새로운'Timestamp'를 생성 할 수 있습니다. 그런 다음'TImestamp.before (Timestamp)'를 사용하십시오. –

+0

좋습니다, 긴 값에서 새 타임 스탬프를 만드는 방법은 무엇입니까? 나는 타임 스탬프와 날짜 등을 처음 사용하기 때문에 쉬운 질문입니다! – java123999

관련 문제