How to get selected am_pm value from TimePicker in Android
Solution 1
If we trust this post timepickerdialog-and-am-or-pm you don't need to get am/pm value cause hour will be always in 24h format. Timepicker display ap/pm but return 24h format value.
Solution 2
If you are using TimePicker instead of TimePickerDialog then You must access Am and PM using this code. Some post also told me that AM/PM is private and it is also bug in android.
This code found from google solved my all problem.
timePickerFrom = (TimePicker) findViewById(R.id.timePickerFrom);
View amPmView = ((ViewGroup) timePickerFrom.getChildAt(0)).getChildAt(2);
if(amPmView instanceof Button)
{
amPmView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("OnClickListener", "OnClickListener called");
if(v instanceof Button)
{
if(((Button) v).getText().equals("AM"))
{
((Button) v).setText("PM");
if (timePickerFrom.getCurrentHour() < 12) {
timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() + 12);
}
}
else{
((Button) v).setText("AM");
if (timePickerFrom.getCurrentHour() >= 12) {
timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() - 12);
}
}
}
}
});
}
Now you can retrieve time using,
timePickerFrom.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
int timeFromHour = timePickerFrom.getCurrentHour();
int timeFromMinute = timePickerFrom.getCurrentMinute();
}
});
I had also this problem, but after lots of effort I got success. Hope works well.
Solution 3
This is how I solved this problem in my application:
public static String convert24To12System (int hour, int minute) {
String time = "";
String am_pm = "";
if (hour < 12 ) {
if (hour == 0) hour = 12;
am_pm = "AM";
}
else {
if (hour != 12)
hour-=12;
am_pm = "PM";
}
String h = hour+"", m = minute+"";
if(h.length() == 1) h = "0"+h;
if(m.length() == 1) m = "0"+m;
time = h+":"+m+" "+am_pm;
return time;
}
Related videos on Youtube
Mahe
Updated on September 15, 2022Comments
-
Mahe over 1 year
I was using a Time picker from which user can set or change time and save to database. I was able to pick Hour(s) and Minutes(s) from Time Picker using,
TimePicker getTimepickerTime = (TimePicker) findViewById(R.id.timePicker1); int Hour= getTimepickerTime.getCurrentHour(); int Minute=getTimepickerTime.getCurrentMinute();
but how to pick the am_pm value from Time Picker?
Please suggest me. I was stuck here.
Any Help will be Appreciated!!