我使用的是时间选择器,用户可以从中设置或更改时间并保存到数据库。我能够使用时间选择器选择小时和分钟,
TimePicker getTimepickerTime = (TimePicker) findViewById(R.id.timePicker1);
int Hour= getTimepickerTime.getCurrentHour();
int Minute=getTimepickerTime.getCurrentMinute();
但如何从Time Picker中选择am_pm值?
请建议我。我被困在这里。
任何帮助都会得到赞赏!!
答案 0 :(得分:4)
如果您使用的是TimePicker而不是TimePickerDialog,则必须使用此代码访问Am和PM。有些帖子还告诉我AM / PM是私有的,它也是android中的bug。
从谷歌找到的代码解决了我的所有问题。
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);
}
}
}
}
});
}
现在您可以使用
检索时间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();
}
});
我也有这个问题,但经过多次努力,我获得了成功。 希望运作良好。
答案 1 :(得分:1)
如果我们相信这篇文章timepickerdialog-and-am-or-pm,您不需要获取am / pm值因为小时将始终为24h格式。 Timepicker显示ap / pm但返回24h格式值。
答案 2 :(得分:0)
您始终可以使用Java或Android Framework提供的SimpleDateFormat来执行此操作。
onTimeSet Listener返回的小时数始终为24小时格式, 简单地解析它并将其格式化为您希望它显示的任何方式。
this.appointmentTimeDialog = new TimePickerDialog(getActivity(),new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
SimpleDateFormat format = new SimpleDateFormat("HH:MM");
try {
Date date = format.parse(""+hourOfDay+":"+minute);
timeCallBack.setText(new SimpleDateFormat("h:MM a").format(date.getTime()));
}catch(ParseException ex){
ex.printStackTrace();
}
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE),false);
我希望能解决一个特殊的Android开发者初学者问题:)
答案 3 :(得分:0)
这就是我在我的应用程序中解决这个问题的方法:
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;
}