• java严格验证日期是否正确的代码


     1 package com.xxxx.util;
     2 
     3 /**
     4  * 输入日期 并进行验证格式是否正确
     5  */
     6 public class FDate {
     7 
     8     public static void main(String[] args) {
     9         System.out.println(validate("2018-06-30t"));
    10     }
    11     
    12     /**
    13      * 检查是否是闰年
    14      * 
    15      * @param year
    16      * @return
    17      */
    18     public static boolean run(int year) {
    19         if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 是闰年
    20 //            System.out.print(year + "是闰年!  ");
    21             return true;
    22         } else {
    23             return false;
    24         }
    25     }
    26 
    27     public static boolean validate(String dateStr) {
    28         String msg ="";
    29         String[] data = new String[3];
    30         boolean flag = true; // 若不符合规则将值改为false
    31         String year = "[0-9]{4}";//
    32         String month = "[0-9]||0[0-9]||1[12]";//
    33         String day = "[0-9]||[0-2][0-9]||3[01]";//
    34         int YEAR = 0;
    35         String str = dateStr;// 输入的字符串
    36         data = str.split("[-/.+]");
    37         // 最基本的检查格式 begin
    38         if (!data[0].matches(year)) {
    39             msg = "年不对";
    40             flag = false;
    41         }
    42         if (!data[1].matches(month)) {
    43             msg = "月不对";
    44             flag = false;
    45         }
    46         if (!data[2].matches(day)) {
    47             msg = "日不对";
    48             flag = false;
    49         }
    50         // end
    51         YEAR = Integer.valueOf(data[0]);
    52         boolean run = run(YEAR);// run 为true是闰年否则是 非闰年
    53         if (run) {// 闰年
    54             if (data[1].matches("0[2]||2")) {// 这里是闰年的2月
    55                 if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-9]")) {
    56                     flag = false;
    57                     msg = "2月份的天数不对";
    58                 }
    59             }
    60         } else {// 非闰年
    61             if (data[1].matches("0[2]||2")) {// 这里是平年的2月
    62                 if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-8]")) {
    63                     flag = false;
    64                     msg = "2月份的天数不对";
    65                 }
    66             }
    67         }
    68 
    69         // 下面判断除了2月份的大小月天数
    70         if (data[1].matches("0[13578]||[13578]||1[02]")) {// 这里是大月
    71             if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||3[01]")) {
    72                 flag = false;
    73                 msg = data[2] + " 天数不对";
    74             }
    75         } else if (data[1].matches("0[469]||[469]||11")) {// 这里是小月
    76             if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||30")) {
    77                 flag = false;
    78                 msg = data[2] + " 天数不对";
    79             }
    80         }
    81 
    82         if (flag) {
    83             msg = "日期格式正确";
    84         }
    85         
    86         return flag;
    87     }
    88 
    89 }
  • 相关阅读:
    Kruskal
    克鲁斯卡尔
    克鲁斯卡尔
    实践是检验真理的唯一标准 脱壳篇02
    Kruskal
    克鲁斯卡尔算法讲解
    实践是检验真理的唯一标准 脱壳篇02
    最小生成树(普里姆算法) 数据结构和算法62
    克鲁斯卡尔算法讲解
    最小生成树(普里姆算法) 数据结构和算法62
  • 原文地址:https://www.cnblogs.com/shamo89/p/9219902.html
Copyright © 2020-2023  润新知