Java 在安卓系统中,如何检查两个时间之间的时间只有晚上
在我的android应用程序中,如果选择的时间大于晚上11:00和早上7:00,则将收取额外费用。它只适用于夜间。目前,我的代码工作正常,但当我在一天中选择一个时间时,条件变为真 这是我的代码Java 在安卓系统中,如何检查两个时间之间的时间只有晚上,java,android,datetime-comparison,Java,Android,Datetime Comparison,在我的android应用程序中,如果选择的时间大于晚上11:00和早上7:00,则将收取额外费用。它只适用于夜间。目前,我的代码工作正常,但当我在一天中选择一个时间时,条件变为真 这是我的代码 Calendar calendar = Calendar.getInstance(); String startDatetime = "11:00 PM"; String endDatetime = "07:00 AM";
Calendar calendar = Calendar.getInstance();
String startDatetime = "11:00 PM";
String endDatetime = "07:00 AM";
SimpleDateFormat formatfornightcharges = new SimpleDateFormat("HH:mm aa");
int Hr24 = calendar.get(Calendar.HOUR_OF_DAY);
try {
Date startDate = formatfornightcharges.parse(startDatetime);
Date selectedTimeforBooking = formatfornightcharges.parse(time_for_night);
Date endDate = formatfornightcharges.parse(endDatetime);
if (selectedTimeforBooking.after(startDate) || selectedTimeforBooking.before(endDate)) {
Toast.makeText(context, "200", Toast.LENGTH_SHORT).show();
night_extra_charges = 200;
tv_text.setText("" + night_extra_charges);
} else {
night_extra_charges = 0;
tv_text.setText("" + night_extra_charges);
Toast.makeText(context, "0", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
您只需将格式化程序更改为:
SimpleDateFormat formatfornightcharges = new SimpleDateFormat("hh:mm aa", Locale.US);
您只需将格式化程序更改为以下格式,而不是
“hh:MM aa”
:
SimpleDateFormat formatfornightcharges = new SimpleDateFormat("hh:mm aa", Locale.US);
不要使用
“hh:MM aa”
试试这个,它可以一直工作,只需更改以下格式的夜间时间:-
String startDatetime = "11:00 PM";
String endDatetime = "07:00 AM";
String time_for_night = "11:05 PM";
Integer night_extra_charges=0;
SimpleDateFormat formatfornightcharges = new SimpleDateFormat("hh:mm aa", Locale.ENGLISH);
try {
Date startDate = formatfornightcharges.parse(startDatetime);
Date selectedTimeforBooking = formatfornightcharges.parse(time_for_night);
Date endDate = formatfornightcharges.parse(endDatetime);
if ((selectedTimeforBooking.after(startDate)) || (selectedTimeforBooking.before(endDate))) {
Toast.makeText(ScanDocumentsActivity.this, "200", Toast.LENGTH_SHORT).show();
night_extra_charges = 200;
Log.wtf("night_extra_charges",""+night_extra_charges);
} else {
night_extra_charges = 0;
Log.wtf("night_extra_charges",""+night_extra_charges);
Toast.makeText(ScanDocumentsActivity.this, "0", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
e.printStackTrace();
} catch (java.text.ParseException e) {
e.printStackTrace();
}
试试这个,它可以一直工作,只需按以下格式更改晚上的时间:-
String startDatetime = "11:00 PM";
String endDatetime = "07:00 AM";
String time_for_night = "11:05 PM";
Integer night_extra_charges=0;
SimpleDateFormat formatfornightcharges = new SimpleDateFormat("hh:mm aa", Locale.ENGLISH);
try {
Date startDate = formatfornightcharges.parse(startDatetime);
Date selectedTimeforBooking = formatfornightcharges.parse(time_for_night);
Date endDate = formatfornightcharges.parse(endDatetime);
if ((selectedTimeforBooking.after(startDate)) || (selectedTimeforBooking.before(endDate))) {
Toast.makeText(ScanDocumentsActivity.this, "200", Toast.LENGTH_SHORT).show();
night_extra_charges = 200;
Log.wtf("night_extra_charges",""+night_extra_charges);
} else {
night_extra_charges = 0;
Log.wtf("night_extra_charges",""+night_extra_charges);
Toast.makeText(ScanDocumentsActivity.this, "0", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
e.printStackTrace();
} catch (java.text.ParseException e) {
e.printStackTrace();
}
但是,如果我添加了&&it,即使我选择了夜间时间,您也必须使用
&&
,因为您希望时间介于开始日期
和结束日期
之间。如果使用|
,则所有时间都返回true
,因为所有时间要么在startDate
之后,要么在endDate
之前。如果仍然没有得到想要的结果,则必须进行调试以找到问题。失败的夜晚的time\u值是多少?是否正确解析为selectedTimeforBooking
?开始日期Thu Jan 01 11:00:00 GMT+05:30 1970 selectedTimeforBooking=Thu Jan 01 11:55:00 GMT+05:30 1970结束时间=Thu Jan 01 07:00 GMT+05:30 1970在这种情况下,条件应为true,但它将进入其他条件结束时间应为结束时间=周三1月02日07:00:00 GMT+05:30 1970非结束时间=周四1月01日07:00:00 GMT+05:30 1970查看我编辑的答案。时间格式不正确。但如果我添加了&&即使我选择了夜间时间,它也不正确,您必须使用&&
,因为您希望时间介于开始日期
和结束日期
之间。如果使用|
,则所有时间都返回true
,因为所有时间要么在startDate
之后,要么在endDate
之前。如果仍然没有得到想要的结果,则必须进行调试以找到问题。失败的夜晚的time\u值是多少?是否正确解析为selectedTimeforBooking
?开始日期Thu Jan 01 11:00:00 GMT+05:30 1970 selectedTimeforBooking=Thu Jan 01 11:55:00 GMT+05:30 1970结束时间=Thu Jan 01 07:00 GMT+05:30 1970在这种情况下,条件应为true,但它将进入其他条件结束时间应为结束时间=周三1月02日07:00:00 GMT+05:30 1970非结束时间=周四1月01日07:00:00 GMT+05:30 1970查看我编辑的答案。时间格式不正确。