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

在java中验证(mm / yyyy)类型的日期格式

在java中验证(mm / yyyy)类型的日期格式

阿波罗的战车 2021-11-17 15:42:35
如何将日期格式验证MM/YYYY为字符串示例-09/20 假13/5651 假3/2104 真的03/2010 真实
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您想要的是自定义方法,因为您对日期的有效性设置了特殊限制。

以下通过了您的所有 4 个示例:


public static boolean validDate(String date) {

    date = date.trim();

    if (date.length() < 6)

        return false;


    String[] parts = date.split("/");

    if (parts.length != 2)

        return false;


    int month = 0;

    try {

        month = Integer.parseInt(parts[0]);

    } catch (NumberFormatException e) {

        e.printStackTrace();

        return false;

    }

    if (month < 1 || month > 12)

        return false;


    int year = 0;

    try {

        year = Integer.parseInt(parts[1]);

    } catch (NumberFormatException e) {

        e.printStackTrace();

        return false;

    }

    if (year < 1000)

        return false;


    return true;

}


public static void main(String[] args) {

    String s1 = "09/20";

    String s2 = "13/5651";

    String s3 = "3/2104";

    String s4 = "03/2010";


    System.out.println(s1 + " " + validDate(s1));

    System.out.println(s2 + " " + validDate(s2));

    System.out.println(s3 + " " + validDate(s3));

    System.out.println(s4 + " " + validDate(s4));

}

将打印:


09/20 false

13/5651 false

3/2104 true

03/2010 true

我不确定这部分:


if (year < 1000)

    return false;

如果你愿意,你可以改变它。


查看完整回答
反对 回复 2021-11-17
?
交互式爱情

TA贡献1712条经验 获得超3个赞

public boolean isThisDateValid(String dateToValidate, String dateFromat){


    if(dateToValidate == null){

        return false;

    }


    SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);

    sdf.setLenient(false);


    try {


        //if not valid, it will throw ParseException

        Date date = sdf.parse(dateToValidate);

        System.out.println(date);


    } catch (ParseException e) {


        e.printStackTrace();

        return false;

    }


    return true;

}

参考https://www.mkyong.com/java/how-to-check-if-date-is-valid-in-java/


查看完整回答
反对 回复 2021-11-17
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

使用YearMonth类。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "M/uuuu" ) ;
YearMonth ym = YearMonth.parse( "3/2018" , f ) ;

用于DateTimeParseException检测无效输入的陷阱。


提示:使用标准ISO 8601格式将日期时间值作为文本进行交换。对于年月:YYYY-MM

java.time类默认使用这些标准格式。

YearMonth.parse( "2018-03" )


查看完整回答
反对 回复 2021-11-17
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

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