2011-12-22 57 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); 
}