/ / Изчислете крайното време и началната разлика във времето в мин. И проверете въведеното време в android - java, android

Изчислете крайното време и началната разлика в минути и проверете вписаното време в android - java, android

Трябва да изчислим времевата разлика междудва пъти (крайно време - начално време). Времето е 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 и да направите нещо много подобно.