具有两个日期的日期格式

时间:2017-08-02 11:23:58

标签: java date

我正在将输入字符串转换为日期。当我尝试将两个日期作为输入Date of BirthDate of Joining时,我不会得到任何满意的结果。如果输入无效,还可以帮我重新提交。提前致谢。

public class EmployeeInfo {
int id;
static String name, DoBS, DoJS;
Date DoB, DoJ;

public void checkDate(String dt) throws ParseException {

    SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
    SimpleDateFormat sdf3 = new SimpleDateFormat("dd MMMM yyyy");

    Date date = null;

    try {
        date = sdf1.parse(dt);
    } catch (ParseException e) {
        try {
            date = sdf2.parse(dt);
        } catch (ParseException e1) {
            try {
                date = sdf3.parse(dt);
            } catch (ParseException e2) {
                String invalid="Invalid,Retry";
                System.out.println(invalid);
                // TODO: Whatever to do when it doesn't find a date
            }
        }
    }

        setDateOfBirth(date);
        setDateOfJoining(date);
}


void setDateOfBirth(Date DoB) {
    this.DoB = DoB;
}

void setDateOfJoining(Date DoJ) {
    this.DoJ = DoJ;
}



void print() {
    System.out.println("User ID: " + id);
    System.out.println("Name: " + name);
    System.out.println("Date Of Birth: " + DoB);
    System.out.println("Date of Joining: " + DoJ);
}

public static void main(String[] args) throws ParseException {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the name: ");
    name = scanner.nextLine();

    System.out.println("Enter the Date Of Birth: ");
    DoBS = scanner.nextLine();

    System.out.println("Enter the Date of Joining: ");
    DoJS = scanner.nextLine();

    EmployeeInfo e = new EmployeeInfo();

    e.checkDate(DoBS);
    e.checkDate(DoJS);
    e.print();

}
}

1 个答案:

答案 0 :(得分:0)

所以我去为你解决了它,它有点被黑了,但会工作得很好 首先,您应该将EmployeeInfo作为单独的类 EmployeeInfo.java

public class EmployeeInfo {
    int id;
    static String name;
    Date DoB, DoJ;

    public void setName(final String name) {
        this.name = name;
    }

    public void setDateOfBirth(final Date DoB) {
        this.DoB = DoB;
    }

    public void setDateOfJoining(final Date DoJ) {
        this.DoJ = DoJ;
    }

    void print() {
        System.out.println("User ID: " + id);
        System.out.println("Name: " + name);
        System.out.println("Date Of Birth: " + DoB);
        System.out.println("Date of Joining: " + DoJ);
    }
}

然后你应该让你的主类运行并拥有所有逻辑 Main.java

public class Main {    
    public static Date checkDate(final String dt) throws ParseException {

        final SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
        final SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
        final SimpleDateFormat sdf3 = new SimpleDateFormat("dd MM yyyy");

        Date date = null;

        try {
            date = sdf1.parse(dt);
        } catch (final ParseException e) {
            try {
                date = sdf2.parse(dt);
            } catch (final ParseException e1) {
                try {
                    date = sdf3.parse(dt);
                } catch (final ParseException e2) {
                    final String invalid = "Invalid,Retry";
                    System.out.println(invalid);
                }
            }
        }
        return date;
    }

    public static void main(final String[] args) throws ParseException {
        final Scanner scanner = new Scanner(System.in);
        final EmployeeInfo e = new EmployeeInfo();
        System.out.println("Enter the name: ");
        e.setName(scanner.nextLine());
        Date d = null;
        while (d == null) {
            System.out.println("Enter the Date Of Birth: ");
            d = checkDate(scanner.nextLine());
        }
        e.setDateOfBirth(d);
        d = null;
        while (d == null) {
            System.out.println("Enter the Date of Joining: ");
            d = checkDate(scanner.nextLine());
        }
        e.setDateOfJoining(d);

        e.print();

    }
}

希望这可以让您了解它是如何完成的。我恳请您比较两个源代码,您的amd我的并尝试了解已更改的内容并尝试找出原因(单独)。