java - 测试键盘输入的字符串是否具有有效的日期和格式

标签 java datetime user-input

我在尝试编写正确的代码来测试键盘字符串是否包含有效日期以及每个特定月份的天数和格式 mm/dd/yyyy 以及闰年调整时遇到问题是我到目前为止所做的我认为我什至不接近但任何帮助将不胜感激。提前致谢

/* read a date from a string from the keyboard to determine if date is in mm/dd/yyyy format.

 */
import java.util.Scanner;

public class DateFormat

{

public static void main(String [ ] args)

{

   Scanner inp = new Scanner(System.in);

   System.out.println("Enter the date in mm/dd/yyyy format. ");

    int mm;

    int dd;

    int yy;

    int date = inp.nextInt();

    boolean isLeapYear;

        if ((mm <1) && (mm >12))

            System.out.println( date + " is not valid month must be between 1 and 12.");
       if (( mm = 4) &&  ( dd <=30 ))
            System.out.println( date + " is a valid date."); 
            }
                else 
                    System.out.println(date + " is not valid date must have 30 or less days. ");
         if (date = mm + "/" + dd + "/" + yy);
            System.out.println( date + " is a valid date format. ");
        }
        else{
            System.out.println( date + " is not valid must be in dd/mm/yyyy format.");

            if (yy %100 ==0) {
          if (yy % 400 ==0){
              isLeapYear = true;
          }    
          else{
              isLeapYear = false;
          }   
        }  
        else{
            if (yy %4 ==0){
             isLeapYear = true;
            }
            else{
             isLeapYear = false;

           if (isLeapYear)
           if ((mm ==2) && (dd <= 29 ))
            System.out.println(date + " is a valid date.");
           }
           else{
               System.out.println( date + "is not valid month must have 29 days or less.");
            if ((mm ==2) && (dd<=28))
                System.out.println( date + "  is a valid date.");
            }
            else{
                System.out.println( date + "is not valid must have 28 days or less. ");

最佳答案

我认为这会有所帮助: http://www.javadb.com/check-if-a-string-is-a-valid-date

基本上,您真的不需要编写代码来检查日期是否有效。例如,您可以使用 java.text 包中的 SimpleDataFormat 类。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Valid? " + isValidDate(scanner.nextLine()));
}

private boolean isValidDate(String inDate) {

    if (inDate == null)
      return false;

    //set the format to use as a constructor argument
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    if (inDate.trim().length() != dateFormat.toPattern().length())
      return false;

    dateFormat.setLenient(false);

    try {
      //parse the inDate parameter
      dateFormat.parse(inDate.trim());
    }
    catch (ParseException pe) {
      return false;
    }
    return true;
  }

关于java - 测试键盘输入的字符串是否具有有效的日期和格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812979/

相关文章:

c# - 为什么 DateTime.ParseExact 会抛出格式为 "dd.Mm.yyy"且日期为 4 位数年份的异常?

Java将字符串转换为日期然后比较

java - 在 Java 中存储三个值的数组

Java For-each 循环数据类型不匹配

java - 网 bean : Setting up java cross-compilation

mysql - Django - MySQL 数据库日期时间字段被清除

java - 在正在运行的 GUI 环境中运行 Java 方法的最佳实践

function - ELISP:提示用户输入数字并询问用户该数量的字符串并将其插入列表的功能

java - "get"当该字符串有值时,方法返回空字符串

java - 如何在java 8中使用收集器和流自动递增 HashMap 的键