2011-12-22 23 views
1

我想通過timePickerDialog獲取AM/PM值。我的代碼是這樣的,它正在通過用戶通過timepickerdialog輸入並設置警報。在這裏我得到用戶輸入如何獲取TimePickerDialog AM PM值

datetime = Calendar.getInstance(); 
new TimePickerDialog(this,this,datetime.get(Calendar.HOUR),datetime.get(Calendar.MINUTE),false).show(); 

現在當onTimeSet函數調用,我可以得到用戶選擇的時,分,但沒能獲得該用戶所選擇的AM/PM值。這裏是其他代碼

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { try { Calendar time = Calendar.getInstance(); 
String am_pm; 

if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
    am_pm = "AM"; 
else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
    am_pm = "PM"; 

time.set(Calendar.HOUR, hourOfDay); 
time.set(Calendar.MINUTE, minute); 
//time.set(Calendar.SECOND, 0); 
//time.set(Calendar.MILLISECOND, 0); 
//time.set(Calendar.AM_PM,datetime.PM); 

AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(this, AlarmReceiver.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);  
alarmMgr.set(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(), pendingIntent); 
Toast.makeText(this, "Alarm Set", Toast.LENGTH_long); 
+0

@ Philipp Reichart謝謝你的回覆。我從下面的帖子中得到了理解。現在我不是在談論AM AM值。當用戶選擇時,我得到了android將它轉換爲24小時格式的答案。但在設置了我的「時間」對象(上面的代碼)的Hour_Of_Day和分鐘參數後。我調用set方法並調用time.getTimeInMillis()。但問題是,當我設置第二天的時間(比如說我現在的系統時間是晚上9點,我設置了第二天的晚上8點),但是alarmManager會立即觸發警報。你能指導我嗎? – 2011-12-23 20:09:17

回答

2

也許這會回答你的問題。你的聽衆中的日曆

TimePickerDialog and AM or PM

+0

不,我無法獲得AM/PM字段。我的系統顯示下午11:00時,當我通過timepicerdialog在上午11:05設置鬧鐘,然後在11:05 PM而不是AM上報警 – 2011-12-22 17:33:07

6

克里特新實例,像如下

Calendar datetime = Calendar.getInstance(); 
    c.set(Calendar.HOUR, mHour); 
    c.set(Calendar.MINUTE, mMinute); 

    if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
     am_pm = "AM"; 
    else if (datetime.get(Calendar.AM_PM) == Calendar.PM) { 
     am_pm = "PM"; 
     if (hourOfDay > 12) 
       hourOfDay = hourOfDay - 12; 
    } 

更新時間:

Calendar mCalendar = Calendar.getInstance(); 

mHour = mCalendar.get(Calendar.HOUR_OF_DAY); 
mMinute = mCalendar.get(Calendar.MINUTE); 


TimePickerDialog timePickerDialog = new TimePickerDialog(mActivity, mTimeSetListener, mHour, mMinute, false); 

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     mCalendar.set(Calendar.MINUTE, mMinute); 
     SimpleDateFormat mSDF = new SimpleDateFormat("hh:mm a"); 
     String time = mSDF.format(mCalendar.getTime()); 
    } 
} 
+0

謝謝它節省了我的一天 – SAndroidD 2017-11-19 08:11:59

0

試試這個:

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