我用我的应用程序一个TimePicker。 每当用户打开屏幕与TimePicker,我与当前时间进行初始化。 当我这样做时,TimePicker显示AM而非PM。 为什么会出现这种情况? 有什么我要在我的代码添加?
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));
你将不得不使用Calendar.HOUR_OF_DAY
而不是Calendar.HOUR
。
即timePicker.setCurrentHour()
总是期望在24小时的格式参数。 不幸的是,这其实是不正确的API文档中记录。
我认为你必须重写Timepicker的onTimeSet()方法。 检查此链接
TimePickerDialog和上午或下午
愿它可以帮助你..
试试这个 :
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);
}
首先,获得的实例Calendar
类,然后使用HOUR_OF_DAY
拿到小时。 HOUR_OF_DAY
将在24小时的格式,以便只赋值给一个变量,然后检查INT是否大于0
且小于12
。 如果这个条件为真,那么追加AM
或者PM
。 由于HOUR_OF_DAY
为24小时格式,在PM小时将显示为13,14
所以要解决这个问题,只是减去HOUR_OF_DAY
由12
。 下面是代码:
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");
}