关于java.text.SimpleDateFormat类setLenient(false)的疑问

新手上路,请多包涵

代码如下

public static void main(String[] args) {
        String text = "2018-11-26-13:50:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
        sdf.setLenient(false);
        try {
            System.out.println(sdf.parse(text));
        } catch (ParseException e) {
            // 抛出异常 java.text.ParseException: Unparseable date: "2018-11-26-13:50:00"
            e.printStackTrace();
        }
    }

setLenient(false)时,日期中小时在上午1点到12点正常运行,在下午13点到00点报错。
求大神解惑。

阅读 2.2k
1 个回答

setLenient方法是设置是否可以对给定格式进行错误时候的宽容处理。
当设置值为false的时候,不对给定字符串进行宽容处理,此时hh表示的是12小时进制的时间,所有只有12个小时是好用的。修改为HH,表示24小时进制的时间即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题