从 TimePickerDialog 到日期

From TimePickerDialog to a Date

我正在寻找一种有效的方法来将我从 TimePickerDialog 获得的 小时 分钟 转换为日期对象。

我需要一个方法,该方法必须知道输入日期是否距现在 () 最多 12 小时。所以也许你可以让我了解一种甚至不使用 Date 对象就可以做到这一点的方法。

PS :在我的 TimePickerDialog 中,我会考虑 now() 之后的每个时间(例如:在 8:00 处设置 5:00 是在 21 小时内)。

PS 2:我用的是24小时格式。

谢谢:)

我认为您不必为此使用 Date 对象。这是一个简单的例子。假设您有一个按钮,单击它会向您显示 TimePickerDialog。

Button 的 onClick() 事件看起来像这样

@Override
public void onClick(View v) {

    // Process to get Current Time
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);
    TimePickerDialog tpd = new TimePickerDialog(this,
            new TimePickerDialog.OnTimeSetListener() {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay,
                                      int minute) {
                    pHour = hourOfDay;
                    int difference = pHour-mHour;
                    if(difference < 0) {
                        int remaining = 24 + difference;
                        if(remaining <= 12) {
                            // Less than or equal to 12 hours from now
                            // isValidTime is a boolean variable defined at the top
                            isValidTime =  true;
                        }
                        else{
                            // More than 12 hours
                            isValidTime =   false;
                        }
                    }
                    else {
                        int remaining = difference;
                        if(remaining <= 12) {
                            // Less than or equal to 12 hours from now
                            isValidTime = true;
                        }
                        else{
                            // More than 12 hours
                            isValidTime = false;
                        }

                    }

                    // Call your method with the isValidTime parameter
                    yourMethodThatNeedsBoolean(isValidTime );

                }
            }, mHour, mMinute,false);

    tpd.show();

}

private void yourMethodThatNeedsBoolean(boolean valid) {
    if(valid) {
        Toast.makeText(MainActivity.this, "Time is valid", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(MainActivity.this, "Time is invalid", Toast.LENGTH_LONG).show();
    }

}

请注意,pHour、mHour 和 mMinute 是整数,而 isValidTime 是布尔值,我已经在代码顶部声明了它(此处未显示)。