选择12:00时比较时间不正确

我正在创建一个预订系统,我不想允许用户预订开始时间为11:00,结束时间为09:00(过去)(我使用的是24小时制)。我有两个装满字符串的组合框,分别用作开始时间和结束时间(09:00,10:00,11:00,12:00,13:00 ....)


我有以下代码:


 String start = (String) startTime.getSelectedItem();

        String end = (String) endTime.getSelectedItem();

        try {

            if(new SimpleDateFormat("hh:mm").parse(start).before(new SimpleDateFormat("hh:mm").parse(end))){

                System.out.println("test1");// future date - good


            }else{

                System.out.println("fail2");// old date - bad

            }

        } catch (ParseException ex) {

                System.out.println("error");

        }

除我选择开始/结束时间为12:00之外,这非常有效。程序输出与预期输出相反,我不确定为什么。


如果我选择开始时间14:00和结束时间12:00,则程序将输出fail2(良好输出),


如果我选择开始时间09:00和结束时间12:00,则程序将输出fail2(应为test1),


如果我选择开始时间12:00和结束时间10:00,则程序将输出test1(应该为fail2),


如果我选择开始时间12:00和结束时间15:00,则程序将输出test1(良好输出)


仅当我选择12:00时才会发生此类问题。


偶然的你
浏览 448回答 3
3回答

慕容森

您应该使用HH:mm。hh范围01-12,而HH范围1-23。更新资料检查文档的SimpleDateFormat:H:一天中的小时(0-23)h:上午/下午(1-12)

慕的地10843

String start = (String) startTime.getSelectedItem();        String end = (String) endTime.getSelectedItem();        SimpleDateFormat timer = new SimpleDateFormat("HH:mm");        try {            Date startD = timer.parse(start);            Date endD = timer.parse(end);            if(startD.before(endD)){                System.out.println("test1");// future date - good            }else{                System.out.println("fail2");// old date - bad            }        } catch (ParseException ex) {                System.out.println("error");    }将我的代码更改为此解决了此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java