2016-06-17 2 views
4

두 시간 사이의 시간차 (종료 시간 - 시작 시간)를 계산해야합니다. 시간은 hh : mm 형식이며 정수 MINUTS의 차이를 원하십니까? 한 번 더 사용자가 입력 한 시간이 1 시간에서 24 시간 사이인지 확인하는 방법은 무엇입니까? (여기 https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html#parse-java.lang.CharSequence-java.time.format.DateTimeFormatter- API 설명서를 참조하십시오)이 API종료 시간과 시작 시간의 차이를 분 단위로 계산하고 안드로이드에서 입력 된 시간을 확인하십시오.

LocalTime.parse(userInput, hhmmFormatter) 

를 사용하여 하바의 로컬 시간에

+0

가장 좋은 이유는 _long_에서 차이점을 찾거나 _Joda_ library를 사용할 수 있기 때문입니다. – Piyush

답변

1

구문 분석이

는 두 개의 입력에 대해이 작업을 수행합니다. 문서에 따르면이 형식은 hh : mm 형식 (hhmmFormatter 인스턴스에서 정의한대로)과 일치하지 않을 경우 DateTimeParseException을 throw하여 사용자가 원하는대로 처리하고 처리 할 수 ​​있도록합니다.

hhmmFormatter 당신은 DateTimeFormatter.ofPattern를 사용하여 직접 만들 수 있지만 단순히 완벽하게 귀하의 케이스에 맞는 표준

DateTimeFormatter.ISO_LOCAL_TIME 

를 사용하는 것이 좋습니다 것입니다. 더 자세한 사항은 여기에 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_TIME

그래서 당신은 단순히 당신이 처리하기를 원한다면 당신은 귀하의 질문에주의하지 않았다

주 (TimeUnit와 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html에 대한 설명서)

try { 
    // NOTE: you can move these into their own try/catch so you can handle bad user input separately if you wish 
    final LocalTime time1 = LocalTime.parse(userInput1, DateTimeForamatter.ISO_LOCAL_TIME); 
    final LocalTime time2 = LocalTime.parse(userInput2, DateTimeForamatter.ISO_LOCAL_TIME); 
    final long differenceInNanos = (time2.toNanoOfDay() - time1.toNanoOfDay()); 
    final long differenceInSeconds = TimeUnit.NANOSECONDS.toSeconds(differenceInNanos) 
} 
catch(DateTimeParseException e){ 
    // TODO code to handle bad user input 
} 

을 할 수있는 경우 사용자가 수 맡았다 며칠에 걸쳐 시간을 지정하므로 LocalTime 만 보여줄 것입니다. 이것을 가장 일반적인 ZonedDateTime 케이스로 쉽게 변환 할 수 있으며 매우 유사한 작업을 수행 할 수 있습니다.

+1

감사합니다. 현지 시간을 사용하고 있습니다. 나는 사용자들에게 시간대를 지정할 필요가 없다. 그것은 내 문제를 해결했습니다. –

관련 문제