我正在尝试签入签到功能,用户无法在指定时间之前办理登机手续。在这个例子中,Ill说他们不能在晚上10点之前办理登机手续
schedule_start string = 10:00以24小时格式
如果用户在10:00之前尝试办理登机手续,则会出现一个警告对话框,告诉他们提早,并在10:00尝试检查
我的问题是即使在指定的时间之后也会出现警告对话框。
有人可以帮我引导我走向正确的方向吗?
SimpleDateFormat parserSDF = new SimpleDateFormat("k:m");
try {
Date d = parserSDF.parse(schedule_start);
Calendar now = Calendar.getInstance();
Date CurrentTime = now.getTime();
if (d.before(CurrentTime)) {
tooearlytocheckin = new AlertDialog.Builder(
screen1.this).create();
WindowManager.LayoutParams lp = tooearlytocheckin.getWindow().getAttributes();
lp.dimAmount = .30f;
tooearlytocheckin.getWindow().setAttributes(lp);
tooearlytocheckin.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
tooearlytocheckin.setTitle(" WARNING");
tooearlytocheckin.setCancelable(false);
tooearlytocheckin.setMessage("It is still too early for you to check in." + " Try back at " + (schedule_start));
tooearlytocheckin.setButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DefaultWidgetVisibilityGONE();
CancelInButtonInstructions(); // <--- Use this setting for displaying view after pressing Okay
vib.vibrate(40);
}
});
tooearlytocheckin.show();
if (d.after(CurrentTime)) {
CheckInToggleButtonInstructions();
}
}
} catch (java.text.ParseException e1) {
e1.printStackTrace();
}
}
答案 0 :(得分:1)
以下是一些指示:
SimpleDateFormat parserSDF = new SimpleDateFormat("k:m");
使用k
你需要1-24小时的时间,而不是0-23 ......我相信你想要HH:mm
。
Date d = parserSDF.parse("10:00");
这会将小时和分钟设置为上午10点,但日期未指定,因此默认为:1-1-1970 ... d
始终在CurrentTime
之前,因为1970&lt;您只需致电new Date()
即可获取当前日期&amp; time然后设置适当的时间,但不推荐使用所有Date.set()方法,而使用Calendar对象。所以让我们切换到Calendar类:
Calendar current = Calendar.getInstance();
Calendar scheduled = Calendar.getInstance();
scheduled.set(Calendar.HOUR_OF_DAY, 10);
scheduled.set(Calendar.MINUTE, 0);
scheduled.set(Calendar.SECOND, 0);
if(scheduled.before(current)) {
// Do as you please
}
使用此方法,我们不会带来与try-catch块或Calendar以外的任何类相关的开销。希望有所帮助。
添加评论
如果向用户显示不同的用户时间,并且您当前以“小时:分钟”格式检索时间,请使用此:
// scheduled_start looks like "23:45"
String[] times = scheduled_start.split(":");
int hour = Integer.parseInt(times[0]); // this'll be 23
int minute = Integer.parseInt(times[1]); // this'll be 45
使用:
scheduled.set(Calendar.HOUR_OF_DAY, hour);
scheduled.set(Calendar.MINUTE, minute);