在 12 小时日历时间上,如何比较我选择的日历结束时间是否早于选择的日历开始时间?
How do I compare whether my selected calendar endtime is earlier than selected calendar starttime on a 12 hour calendar time?
我正在尝试交叉检查我选择的日历结束时间是否早于我选择的 12 小时时间段内的日历开始时间。
目前我使用 2 个不同的属性来存储选定的日历开始时间和结束时间,如下所示:
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
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)+"";
String strMinsToShow = minute < 10 ? "0"+minute : ""+minute;
if (isStartTimeClicked) {
starttime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
} else {
endtime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
}
isStartTimeClicked = false;
}
我只想比较这两个选择的开始时间和结束时间,结束时间不能早于或等于开始时间。 (它必须在开始时间之后,比如开始时间是下午 2 点,结束时间应该至少 2:01pm 或更晚,不能是上午 11 点等)。
即使是显示所选结束时间早于或晚于开始时间的布尔函数也足够了,但我不确定如何根据我的代码在 12 小时的时间段范围内进行处理,如上所示。
有任何想法吗?
提前致谢!
我用于时间选择器的功能:
public void openMyTimePicker() {
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
false
);
tpd.show(getFragmentManager(), "Timepickerdialog");
}
您需要使用 Date.after
或 Date.before
功能
//Compare Date
if (endDate.before(startDate)) {
//End date is before start date
} else {
//End date is after start date
}
在您的结束时间选择器中onTimeSet()
检查开始时间选择器中设置的时间
//You will need to declare enddatetime and startdatetime at class level
if (enddatetime.getTimeInMillis() >= startdatetime.getTimeInMillis()) {
int hour = hourOfDay % 12;
btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
minute, hourOfDay < 12 ? "am" : "pm"));
} else {
Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show(); // before time
}
我正在尝试交叉检查我选择的日历结束时间是否早于我选择的 12 小时时间段内的日历开始时间。 目前我使用 2 个不同的属性来存储选定的日历开始时间和结束时间,如下所示:
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
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)+"";
String strMinsToShow = minute < 10 ? "0"+minute : ""+minute;
if (isStartTimeClicked) {
starttime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
} else {
endtime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
}
isStartTimeClicked = false;
}
我只想比较这两个选择的开始时间和结束时间,结束时间不能早于或等于开始时间。 (它必须在开始时间之后,比如开始时间是下午 2 点,结束时间应该至少 2:01pm 或更晚,不能是上午 11 点等)。 即使是显示所选结束时间早于或晚于开始时间的布尔函数也足够了,但我不确定如何根据我的代码在 12 小时的时间段范围内进行处理,如上所示。 有任何想法吗? 提前致谢!
我用于时间选择器的功能:
public void openMyTimePicker() {
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
false
);
tpd.show(getFragmentManager(), "Timepickerdialog");
}
您需要使用 Date.after
或 Date.before
功能
//Compare Date
if (endDate.before(startDate)) {
//End date is before start date
} else {
//End date is after start date
}
在您的结束时间选择器中onTimeSet()
检查开始时间选择器中设置的时间
//You will need to declare enddatetime and startdatetime at class level
if (enddatetime.getTimeInMillis() >= startdatetime.getTimeInMillis()) {
int hour = hourOfDay % 12;
btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
minute, hourOfDay < 12 ? "am" : "pm"));
} else {
Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show(); // before time
}