Трябва да изчислим времевата разлика междудва пъти (крайно време - начално време). Времето е hh: mm формат и искам разликата в целочислените MINUTS? Още едно нещо как да проверите дали времето, въведено от потребителя, е между 1 и 24 часа?
Отговори:
1 за отговор № 1Разбери го в hava LocalTime, използвайки този API
LocalTime.parse(userInput, hhmmFormatter)
(Вижте документацията на API тук https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html#parse-java.lang.CharSequence-java.time.format.DateTimeFormatter-)
Направете това за двата входа. Според документацията, този метод ще хвърли DateTimeParseException, ако форматът не съвпада с hh: mm (както е дефиниран от вашия hhmmFormatter екземпляр), така че можете да го хванете и да го обработите, както желаете.
В hhmmFormatter можете да създадете сами, като използвате DateTimeFormatter.ofPattern, но бих препоръчал просто да използвате стандартния
DateTimeFormatter.ISO_LOCAL_TIME
което пасва идеално на вашия случай. Повече подробности тук https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_TIME
Така че можете просто да го направите
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
}
(документация за TimeUnit https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html)
Обърнете внимание, че не сте отбелязали въпроса си, ако стеИсках да се справим със случаите, в които потребителите могат да посочват пъти в дните, затова ви показвам само LocalTime. Можете лесно да конвертирате това в най-общия случай ZonedDateTime и да направите нещо много подобно.