Подтвердить что ты не робот

Время обработки формата hh: mm: ss

Как я могу разобрать время форматирования hh:mm:ss, введенное в виде строки, чтобы получить только целочисленные значения (игнорируя двоеточия) в java?

4b9b3361

Ответ 1

Согласно комментарию Basil Bourque, это обновленный ответ на этот вопрос, учитывая новый API Java 8:

    String myDateString = "13:24:40";
    LocalTime localTime = LocalTime.parse(myDateString, DateTimeFormatter.ofPattern("HH:mm:ss"));
    int hour = localTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
    int minute = localTime.get(ChronoField.MINUTE_OF_HOUR);
    int second = localTime.get(ChronoField.SECOND_OF_MINUTE);

    //prints "hour: 13, minute: 24, second: 40":
    System.out.println(String.format("hour: %d, minute: %d, second: %d", hour, minute, second));

Примечания:

  • так как вопрос OP содержит конкретный пример момента времени, содержащего только часы, минуты и секунды (без дня, месяца и т.д.), в ответе выше используется LocalTime. Если вы хотите разобрать строку, которая также содержит дни, месяц и т.д., То LocalDateTime потребуется. Его использование в значительной степени аналогично использованию LocalTime.
  • поскольку момент времени int OP question не содержит никакой информации о часовом поясе, ответ использует версию LocalXXX классов даты/времени (LocalTime, LocalDateTime). Если строка времени, которая должна быть проанализирована, также содержит информацию о часовом поясе, тогда ZonedDateTime необходимо использовать.

====== Ниже приведен старый (оригинальный) ответ на этот вопрос, используя API pre-Java8: =====

Извините, если я соберу кого-нибудь с этим, но на самом деле я собираюсь ответить на вопрос. Java API довольно огромны, я думаю, что это нормально, что кто-то может время от времени пропустить.

SimpleDateFormat может сделать трюк здесь:

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Это должно быть что-то вроде:

String myDateString = "13:24:40";
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//the above commented line was changed to the one below, as per Grodriguez pertinent comment:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(myDateString);

Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
int hour = calendar.get(Calendar.HOUR);
int minute; /... similar methods for minutes and seconds

Вы должны знать:

  • шаблон, который вы передаете в SimpleDateFormat, может отличаться от приведенного в моем примере в зависимости от того, какие значения у вас есть (часы в формате 12 часов или в формате 24 часа и т.д.). Подробнее об этом см. В документации по ссылке.

  • Как только вы создаете объект Date из своей String (через SimpleDateFormat), не испытывайте соблазна использовать Date.getHour(), Date.getMinute() и т.д. Они могут появляться, чтобы работать время от времени, но в целом они могут давать плохие результаты и, как таковые, теперь устарели. Вместо этого используйте календарь, как в приведенном выше примере.

Ответ 2

Немного подробный, но это стандарт способ синтаксического анализа и форматирования в Java:

DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
try {
  Date dt = formatter.parse("08:19:12");
  Calendar cal = Calendar.getInstance();
  cal.setTime(dt);
  int hour = cal.get(Calendar.HOUR);
  int minute = cal.get(Calendar.MINUTE);
  int second = cal.get(Calendar.SECOND);
} catch (ParseException e) {
  // This can happen if you are trying to parse an invalid date, e.g., 25:19:12.
  // Here, you should log the error and decide what to do next
  e.printStackTrace();
}

Ответ 3

String time = "12:32:22";
String[] values = time.split(":");

Это займет ваше время и разделит его, где он увидит двоеточие, и поместите значение в массив, поэтому после этого у вас должно быть 3 значения.

Затем перебираем строковый массив и конвертируем каждый из них. (с Integer.parseInt)

Ответ 4

Если вы хотите извлечь часы, минуты и секунды, попробуйте следующее:

String inputDate = "12:00:00";
String[] split = inputDate.split(":");
int hours = Integer.valueOf(split[0]);
int minutes = Integer.valueOf(split[1]);
int seconds = Integer.valueOf(split[2]);

Ответ 5

вы можете использовать метод toCharArray() возвращать данные типа: array ( "1", "2", ":", "0" , "1", ":", "0" , "0" ) < - это char в java или вы можете преобразовать строку в Date + try catch = > , затем получить час, минуты и секунды