TimePicker反向24小时数据

时间:2015-09-04 10:16:25

标签: android

美好的一天!

我有一个包含TimePicker的Dialog类。 TimePicker设置为24小时模式。 当我用小时选择时间< 12 - Picker返回时间+12小时

例如 -

  

我设定了07:25 - 返回19:25。反之亦然

     

如果我设置19:43 - 返回07:42。并且

     

如果我设置12:01,例如 - TimePicker返回白痴24:01。

这个工具有什么问题?

这是我的Dialog类的完整代码:

public class TimePickerDialog extends DialogFragment {

    public static final String EXTRA_TIME = "time";

    @Bind(R.id.pickerTime_timePicker) TimePicker timePicker;

    //// DialogFragment methods

    @Override @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        View view =  getActivity().getLayoutInflater().inflate(R.layout.picker_time, null);
        ButterKnife.bind(this, view);

        timePicker.setIs24HourView(true);

        return new AlertDialog.Builder(getActivity())
                .setView(view)
                .setTitle(getString(R.string.time_picker_dialog_label))
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        sendResult(Activity.RESULT_OK);
                    }
                })
                .setNegativeButton(android.R.string.cancel, null)
                .create();
    }

    //// Private methods

    private void sendResult(int resultCode) {
        if (getTargetFragment() == null) {
            return;
        }

        Intent intent = new Intent();
        intent.putExtra(EXTRA_TIME, getTimeFromTimePicker(timePicker));

        getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent);
    }

    private Date getTimeFromTimePicker(TimePicker timePicker) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR, timePicker.getCurrentHour());
        calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());

        return calendar.getTime();
    }
}

3 个答案:

答案 0 :(得分:1)

我猜你应该使用calendar.set(日历。 HOUR_OF_DAY ,timePicker.getCurrentHour());

答案 1 :(得分:1)

把这一行,

timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
下面

timePicker.setIs24HourView(true);

将相应地设置当前时间。 让我知道它是否适合你...

答案 2 :(得分:0)

阅读documentation 提供的示例适用于所有人,无需绑定某些内容。为什么在对话框中需要额外的逻辑?它应该负责选择时间。其他逻辑应该在您的控制器中。