2013-03-14 56 views
2

我使用的是時間選擇器,用戶可以從中設置或更改時間並保存到數據庫。我能挑到利用時間選取小時(S)和分鐘(S),如何從Android的TimePicker中獲取選定的am_pm值

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

但如何挑選從時間選取的AM_PM價值?

請給我建議。我被困在這裏。

任何幫助將被讚賞!

回答

1

如果我們相信這個職位timepickerdialog-and-am-or-pm你不需要得到上午/下午值導致小時將始終以24h格式。 Timepicker顯示ap/pm但返回24h格式值。

+1

是。確實如此。我現在檢查了它。謝謝!!! – Mahe 2013-03-14 11:27:07

+0

不客氣:) – 2013-03-14 11:28:15

3

如果您使用的是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(); 

     } 
    }); 

我也有這個問題,但是很多的努力後,我得到了成功。 希望運作良好。

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開發初學者的問題:)

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; 
} 
相關問題