在Android TimePicker Dialog Fragment中显示12hh格式

时间:2014-01-16 06:08:36

标签: java android

我正在做一个Android应用程序,我必须选择一个特定的时间。

这是我到目前为止所做的:

 public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    // use the current time as the default values for the picker
    Calendar c = Calendar.getInstance();
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);


    // create a new instance of TimePickerDialog and return it
    return new TimePickerDialog(getActivity(), this, hour, minute, false
            ); // DateFormat.is24HourFormat(getActivity())
}

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{   
    view.setIs24HourView(false);
    String time;

    if ( minute < 10  ) {
        _minute =  ":0" + minute;
    } else {
        _minute = ":" + minute;
    }


    Log.w("TimePicker", "Time = " + time);


    EditText activityButton = (EditText)getActivity().findViewById(R.id.etTime);
    activityButton.setText( time );


}

我想要实现的目标是:

 6:30 PM

但我得到的只是:

18:30 

我希望12 H格式不是24小时。我怎样才能做到这一点?感谢非常感谢帮助。

3 个答案:

答案 0 :(得分:1)

尝试更改

 int hour = c.get(Calendar.HOUR_OF_DAY);

int hour = c.get(Calendar.HOUR);

bcoz我在

上看到了
public static final int HOUR_OF_DAY

在API级别1中添加

获取和设置的字段编号,表示当天的小时。 HOUR_OF_DAY用于24小时制。例如,在10:04:15.250 PM,HOUR_OF_DAY是22。

http://developer.android.com/reference/java/util/Calendar.html#HOUR_OF_DAY

答案 1 :(得分:0)

只需使用TimePickerDialog类即可使用其构造函数实现此目的:

 TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)

查看文档here

根据您的要求,请从此处查看参考资料:

http://www.compiletimeerror.com/2013/07/time-picker-in-android-example.html

答案 2 :(得分:0)

您只需要设置一个条件来确定当天的小时是否大于12,这样您就可以减少12小时并将PM附加到它。条件还应该确定当天的小时是否等于下午12点,所以它只会附加PM而不会减少12小时。

DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
                let url = URL(string: itemImageURL )
                let data = try? Data(contentsOf: url!)
                if data != nil {
                    DispatchQueue.main.async{
                        cell.advImage!.image = UIImage(data: data!)
                    }
                }
            }