Существует одна проблема струн «:»Прочитайте час и минуту от времени строки
String time = "21:45";
Как преобразовать эту строку в два междунар:
int hour = 21;
int minute = 45;
Существует одна проблема струн «:»Прочитайте час и минуту от времени строки
String time = "21:45";
Как преобразовать эту строку в два междунар:
int hour = 21;
int minute = 45;
прямо вперед, непроверяющий путь:
String[] parts = time.split(":");
int hour = Integer.parseInt(parts[0]);
int minute = Integer.parseInt(parts[1]);
Вы должны рассмотреть возможность использования Calendar
разобрать такие строки времени:
String time = "21:45";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
sdf.setLenient(false);
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(time));
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
System.out.println(hour);
System.out.println(minute);
21 45
Вы можете справиться с потенциальной ParseException
иметь дело с недопустимыми входами.
Здесь отсутствует один важный момент, а именно 'setLenient (false)', см. Мой ответ. –
@MenoHochschild Да, вы правы, я добавлю это к фрагменту выше. +1 к вам. – arshajii
О, еще одна проблема, вы используете hh: mm, я бы использовал HH: mm для 24 часов. ;-) –
Здесь поистине проверки решения:
String time = "21:45";
boolean valid = true;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
sdf.setLenient(false); // important for validation
GregorianCalendar gcal = new GregorianCalendar();
try {
gcal.setTime(sdf.parse(time));
} catch (ParseException pe) {
valid = false;
}
if (valid) {
int hours = gcal.get(Calendar.HOUR_OF_DAY);
int minutes = gcal.get(Calendar.MINUTE);
System.out.println("Hours: " + hours);
System.out.println("Minutes: " + minutes);
} else {
System.out.println("Sorry, the input is not valid: " + time);
}
Не становится намного проще, чем это. – TEK
На самом деле, он должен усложняться для проверки времени, с некоторым регулярным выражением, например. '\ Д {2}: \ д {2}'. – ahanin