Не могу отформатировать время из Time Picker
В настоящее время пытаюсь получить два разных значения из средства выбора времени напоминания о часах, которое является выбранным часом и напоминанием, которое является выбранным мином. Думал, у меня все работает отлично, но сегодня утром обнаружил еще одну ошибку.
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(AddPayment.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
reminderHour = selectedHour;
reminderMin = selectedMinute;
if (selectedHour < 10)
{
if(selectedMinute == 0)
{
eReminderTime.setText("0" + selectedHour + ":00" + selectedMinute);
}
else if(selectedMinute < 10)
{
eReminderTime.setText("0" + selectedHour + ":0" + selectedMinute);
}
else
{
eReminderTime.setText("0" + selectedHour + ":" + selectedMinute);
}
}
if (selectedHour == 0)
{
if(selectedMinute == 0)
{
eReminderTime.setText("0" + selectedHour + ":00" + selectedMinute);
}
else if(selectedMinute < 10)
{
eReminderTime.setText("0" + selectedHour + ":0" + selectedMinute);
}
else
{
eReminderTime.setText("0" + selectedHour + ":" + selectedMinute);
}
}
if(selectedMinute == 0)
{
eReminderTime.setText("" + selectedHour + ":00" + selectedMinute);
}
if(selectedMinute < 10)
{
eReminderTime.setText("" + selectedHour + ":0" + selectedMinute);
}
else
{
eReminderTime.setText( "" + selectedHour + ":" + selectedMinute);
}
}
}, hour, minute, true);
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
});
Это код для моего Time Picker. Я не хочу, чтобы время объединялось все вместе, потому что мне нужно, чтобы значение часа хранилось отдельно от значения минуты.
Я попытался найти SimpleDateFormat, но не смог заставить его работать. Это код, который я пробовал
SimpleDateFormat simpleHour = new SimpleDateFormat("kk");
SimpleDateFormat simpleMin = new SimpleDateFormat("mm");
formatHour = simpleHour.format(selectedHour);
formatMin = simpleMin.format(selectedMinute);
reminderHour = Integer.parseInt(formatHour);
reminderMin = Integer.parseInt(formatMin);
Toast.makeText(getApplicationContext(), formatHour, 0).show();
Toast.makeText(getApplicationContext(), formatHour, 0).show();
2 ответа
Это потому, что отдельные чч и мм не являются допустимыми форматами. Попробуйте объединить значения минут и часов вместе, и когда вы получите объединенное значение, разделите их с помощью split()
например;
SimpleDateFormat simpleHour= new SimpleDateFormat("hh:mm");
String strTime = sdf.format(new Date());
String[] pieces=strTime.split(":");
Log.i("Hour: ",pieces[0]);
Log.i("Miniute: ",pieces[1]);
Какой выход вы хотите именно? Если это просто что-то вроде:
01:32
Тогда проще создать строку самостоятельно, чем беспокоиться о форматах даты и т. Д.
//Add leading zeros if required
String hours = (String) ((selectedHour < 10) ? "0" + selectedHour
: Integer.toString(selectedHour));
String minutes = (String) ((selectedMinute < 10) ? "0" + selectedMinute
: Integer.toString(selectedMinute));
String prettyTime = hours + ":" + minutes;