그래서 내 프로젝트 중 하나에서 Date4J (http://www.date4j.net/javadoc/hirondelle/date4j/DateTime.html)가 JodaTime보다 조금 더 사용하기 쉽다는 것을 알고 있습니다. 효과가 있지만 마지막으로 이벤트가 발생했을 때 마지막으로 본 기능을 만들려고합니다. 나는 2 개의 객체, lastOnline을 가지고 있습니다. 다음과 같이 이들의 값은 다음과 같습니다 말했다와Date4j compare 2 times
System.out.println("LastOnline year " + lastOnline.getYear() + "---Now.year--" + now.getYear());
System.out.println("LastOnline Month " + lastOnline.getMonth() + "---Now.Month--" + now.getMonth());
System.out.println("LastOnline Day " + lastOnline.getDay() + "---Now.Day--" + now.getDay());
System.out.println("LastOnline Hour " + lastOnline.getHour() + "---Now.Hour--" + now.getHour());
System.out.println("LastOnline Minute " + lastOnline.getMinute() + "---Now.Minute--" + now.getMinute());
System.out.println("LastOnline Second " + lastOnline.getSecond() + "---Now.Second--" + now.getSecond());
System.out.println("LastOnline NanoSecond " + lastOnline.getMilliseconds(TimeZone.getTimeZone("UTC")) + "---Now.Nanosecond--" + now.getMilliseconds(TimeZone.getTimeZone("UTC")));
, 나는 .minus 기능에 대한 설명서를 살펴했다 내가없는 것 : 나는 다음과 같은 명령을 것을 가지고
LastOnline year 2015---Now.year--2015
LastOnline Month 1---Now.Month--1
LastOnline Day 18---Now.Day--18
LastOnline Hour 14---Now.Hour--14
LastOnline Minute 13---Now.Minute--33
LastOnline Second 24---Now.Second--15
LastOnline NanoSecond 1421590404000---Now.Nanosecond--1421591595316
그것을 작동 시키려면, 그것은 NullPointerExceptions의 톤을 던져 버리고 나는 이유를 알 수없는 것 같습니다. 여기 내 빼기 기능입니다 :
DateTime difference;
difference = now.minus(lastOnline.getYear(), lastOnline.getMonth(), lastOnline.getDay(), lastOnline.getHour(),
lastOnline.getMinute(), lastOnline.getSecond(), lastOnline.getNanoseconds(), DateTime.DayOverflow.FirstDay);
그리고 마지막으로 여기 스택입니다 trace--
java.lang.NullPointerException
at hirondelle.date4j.DateTime.minus(Unknown Source)
at globalFunctions.compareTime(globalFunctions.java:177)
at globalFunctions.logScrape(globalFunctions.java:158)
at Commands.bangCommands(Commands.java:32)
at Commands.handleCommands(Commands.java:9)
at listener.main(listener.java:53)
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.application.AppMain.main(AppMain.java:134)
당신의 밀리 초-이후-획기적인 데이터 (당신이에 따라 정확한 사용자의 입력 값으로
"nanosecond"값을 1421591595316으로 이해할 수 없습니다. 문서에 유효한 값의 범위는 0-999,999,999입니다. –
아, 알다시피, getMilliseconds() 메소드를 통해 얻지 만, 이것은 나노 초가 아닌 값입니다. 이것은 유닉스 시대 이후의 경과 된 밀리 초의 수입니다. –
오른쪽, 미안해, 나는 그것을 잘못 표시했다. –