ошибка в получении правильных часов и минут - PullRequest
0 голосов
/ 08 мая 2018
public class Testdate_time {

public void testdate() throws ParseException {

    String in_time = "2018 May 07 09:20:01 AM";
    String out_time = "2018 May 07 10:08:29 AM";
    int hours = 0;
    int mintues = 0;
    org.joda.time.format.DateTimeFormatter format = DateTimeFormat.forPattern("yyyy MMM dd hh:mm:ss a");
    DateTime date1 = format.parseDateTime(in_time);
    DateTime date2 = format.parseDateTime(out_time);
    hours = Hours.hoursBetween(date1, date2).getHours();

    String strhours = String.valueOf(hours).replaceAll("-", "");
    mintues = date1.getMinuteOfHour() - date2.getMinuteOfHour();
    String Strminutes = String.valueOf(mintues).replaceAll("-", "");
    System.out.println("hours" + strhours);
    System.out.println("minutes" + Strminutes);

}

public static void main(String[] args) throws ParseException {

    new Testdate_time().testdate();

}

Я также использовал йодатим и упрощенный формат http://www.joda.org/joda-time/userguide.html

Выход:

hours0
minutes12

1 Ответ

0 голосов
/ 08 мая 2018

Чтобы правильно рассчитать часы и минуты между двумя датами, используя Java 8 Time API и игнорируя переход на летнее время, вы должны сделать это так:

String in_time = "2018 May 07 09:20:01 AM";
String out_time = "2018 May 07 10:08:29 AM";
DateTimeFormatter format = DateTimeFormatter.ofPattern("uuuu MMM dd hh:mm:ss a", Locale.US);
LocalDateTime date1 = LocalDateTime.parse(in_time, format);
LocalDateTime date2 = LocalDateTime.parse(out_time, format);

long diff = ChronoUnit.MINUTES.between(date1, date2);
System.out.printf("%d hours %d minutes%n", diff / 60, diff % 60);

Или, если вы не хотите делать математику самостоятельно, используйте Duration:

Duration duration = Duration.between(date1, date2);
System.out.printf("%d hours %d minutes%n", duration.toHours(), duration.toMinutesPart());

Выход (от обоих)

0 hours 48 minutes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...