如何在TimePickerDialog中设置AM / PM?

时间:2014-11-03 10:42:11

标签: android timepicker

我已经创建了简单的TimePickerDialog,但是如果我已经设置了当前时间选择器,那么设置AM和PM就会出现问题。

让我们看看......

如果当前时间是:下午5:39

这是我的代码..

Calendar cal = Calendar.getInstance();
int mHour = cal.get(Calendar.HOUR_OF_DAY);
int mMinute = cal.get(Calendar.MINUTE);
int mTimeSet=cal.get(Calendar.AM_PM);
TimePickerDialog tpd = new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener()
        {
                    @Override
                    public void onTimeSet(TimePicker view, int hours,int minute)
                    {
                        String timeSet = "";
                        if (hours > 12) {
                            hours -= 12;
                            timeSet = "PM";
                        } else if (hours == 0) {
                            hours += 12;
                            timeSet = "AM";
                        } else if (hours == 12)
                            timeSet = "PM";
                        else
                            timeSet = "AM";

                        String minutes="";
                        if (minute < 10)
                            minutes = "0" + minute;
                        else
                            minutes = String.valueOf(minute);
                        textView.setText(hours + ":" + minutes + " " + timeSet);
                    }
                }, mHour, mMinute,false);

        tpd.show();

结果

enter image description here

但如何在时间选择器对话框中设置PM? 请任何解决方案

3 个答案:

答案 0 :(得分:2)

public void onTimeSet(TimePicker view, int hourOfDay, int minute) 
{
String am_pm = "";
Calendar datetime = Calendar.getInstance();
datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
datetime.set(Calendar.MINUTE, minute);

if (datetime.get(Calendar.AM_PM) == Calendar.AM)
    am_pm = "AM";
else if (datetime.get(Calendar.AM_PM) == Calendar.PM)
    am_pm = "PM";
String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ?"12":datetime.get(Calendar.HOUR)+""; 

((Button)getActivity().findViewById(R.id.btnEventStartTime)).setText(
   strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm );
 }

TimePickerDialog and AM or PM

答案 1 :(得分:1)

private void updateTime(int hours, int mins) {

        String timeSet = "";
        if (hours > 12) {
            timeSet = "PM";
            hours -= 12;
        } else if (hours == 0) {
            timeSet = "AM";
            hours += 12;
        } else if (hours == 12)
            timeSet = "PM";
        else
            timeSet = "AM";


        String minutes = "";
        if (mins < 10)
            minutes = "0" + mins;
        else
            minutes = String.valueOf(mins);

        // Append in a StringBuilder
         String aTime = new StringBuilder().append(hours).append(':')
                .append(minutes).append(" ").append(timeSet).toString();

          output.setText(aTime);
    }

答案 2 :(得分:1)

尝试这样,

public void onTimeSet(TimePicker view, int hourOfDay, int minute) 
{

Calendar date = Calendar.getInstance();
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
date.set(Calendar.AM_PM, date.get(Calendar.AM_PM));


textView.setText(date.getTime());

 }