2015-09-04 61 views
2

美好的一天!TimePicker反向24小时数据

我有一个包含TimePicker的Dialog类。 TimePicker设置为24小时模式。 当我选择时间< 12 - 选择器返回时间+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(); 
    } 
} 

回答

1

,就把这行,

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

下面,

timePicker.setIs24HourView(true); 

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

0

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

+0

不,那不行。我应该注意到我目前在设备上的时间是13:33。但是当我启动TimePicker时,它会在滚动条上设置01:33。 24小时模式开启。 –

+0

这很奇怪。我将你的代码复制并粘贴到我的项目中,并且工作正常。除非我调用caledar.get(Calendar.HOUR_OF_DAY),否则它将返回1的13。可以通过设置HOUR_OF_DAY而不是HOUR来修复。也许你在某个地方设置了时间戳吗? –

0

刚才看了documentation 提供的示例适用于每个人,需要绑定的东西。为什么在对话框中需要额外的逻辑?它应该负责挑选时间。其他的逻辑应该在你的控制器中。