I am using a TimePicker in my app. Whenever the user opens the screen with the TimePicker, I initialize it with the current time. When I do this, the TimePicker shows AM instead of PM. Why does this happen? Is there anything I have to add in my code?
Date initDate = m_NoteManageObject.getDateTimeArray(position);
Calendar myCal = Calendar.getInstance();
myCal.setTime(initDate);
TimePicker timePicker = (TimePicker)layout.findViewById(R.id.time_picker);
// Initialise Time Picker
timePicker.setCurrentHour(myCal.get(Calendar.HOUR));
timePicker.setCurrentMinute(myCal.get(Calendar.MINUTE));
You'll have to use Calendar.HOUR_OF_DAY
instead of Calendar.HOUR
.
i.e., timePicker.setCurrentHour()
always expects the argument in 24-hour format. Unfortunately, this fact is not documented properly in the API documentation.
I think you have to override the onTimeSet() method of the Timepicker. Check this link
May it helps you..
Try this :
Calendar calendar = Calendar.getInstance();
calendar.set(0, 0, 0, hourOfDay, minute, 0);
long timeInMillis = calendar.getTimeInMillis();
java.text.DateFormat dateFormatter = new SimpleDateFormat("hh:mm a");
Date date = new Date();
date.setTime(timeInMillis);
time.setText(dateFormatter.format(date));
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute) {
if(hourOfDay>=0 && hourOfDay<12){
time = hourOfDay + " : " + minute + " AM";
} else {
if(hourOfDay == 12){
time = hourOfDay + " : " + minute + "PM";
} else{
hourOfDay = hourOfDay -12;
time = hourOfDay + " : " + minute + "PM";
}
}
deliveryTime.setText(time);
}
First, get an instance of the Calendar
class, then use HOUR_OF_DAY
to get the hour. HOUR_OF_DAY
will be in 24-hour format so just assign that to a variable and then check whether that int is greater than 0
and less than 12
. If this condition is true then append AM
or else PM
. Because HOUR_OF_DAY
is 24-hour format, the PM hours will be displayed as 13,14
so to handle this, just subtract the HOUR_OF_DAY
by 12
. Here is the code:
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 12 && hour >= 0) {
tv.setText(hour + " AM");
} else {
hour -= 12;
if(hour == 0) {
hour = 12;
}
tv.setText(hour + " PM");
}
来源:https://stackoverflow.com/questions/11381985/how-do-i-set-am-pm-in-a-timepicker