为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2020-02-03 12:52:31
我正在创建一个预订系统,我不想允许用户预订开始时间为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时才会发生此类问题。
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您应该使用HH:mm。


hh范围01-12,而HH范围1-23。


更新资料

检查文档的SimpleDateFormat:


H:一天中的小时(0-23)


h:上午/下午(1-12)


查看完整回答
反对 回复 2020-02-03
?
慕的地10843

TA贡献1785条经验 获得超8个赞

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");

    }

将我的代码更改为此解决了此问题。


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 447 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信