3

我正在使用时间选择器,用户可以从中设置或更改时间并保存到数据库。我可以使用 Time Picker 从 Time Picker 中选择 Hour(s) 和 Minutes(s),

TimePicker getTimepickerTime = (TimePicker) findViewById(R.id.timePicker1);
int Hour= getTimepickerTime.getCurrentHour();
int Minute=getTimepickerTime.getCurrentMinute();

但是如何从时间选择器中选择 am_pm 值?

请给我建议。我被困在这里。

任何帮助将不胜感激!!

4

4 回答 4

4

如果您使用的是 TimePicker 而不是 TimePickerDialog,那么您必须使用此代码访问 Am 和 PM。一些帖子还告诉我 AM/PM 是私有的,它也是 android 中的错误。

从谷歌找到的这段代码解决了我的所有问题。

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();

        }
    });

我也有这个问题,但经过很多努力,我得到了成功。希望工作顺利。

于 2014-11-20T06:53:00.667 回答
2

如果我们信任此帖子timepickerdialog-and-am-or-pm,则您不需要获取 am/pm 值,因为小时将始终采用 24 小时格式。Timepicker 显示 ap/pm 但返回 24 小时格式值。

于 2013-03-14T11:22:35.510 回答
1

这就是我在我的应用程序中解决这个问题的方法:

    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;
}
于 2015-11-02T13:16:32.240 回答
0

您始终可以使用 Java 或 Android 框架提供的 SimpleDateFormat 来执行此操作。

onTimeSet Listener 返回的 Hours 始终采用 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 开发者初学者问题 :)

于 2015-05-27T01:33:09.807 回答