有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java理解如何将SimpleDataFormat与其他参数一起使用

我试图理解格式化日期并将其添加为对象参数的逻辑,但发现这很困难。我正在尝试使用SimpleDataFormat

myClassroom.addEnrolment(new Classroom("502","424"));
myClassroom.addEnrolment(new Classroom("503","425"));
myClassroom.addEnrolment(new Classroom("504","426"));   

但为了达到这个目标

myClassroom.addEnrolment(new Classroom("502","424", "2020-05-12"));
myClassroom.addEnrolment(new Classroom("503","425", "2020-04-22"));
myClassroom.addEnrolment(new Classroom("504","426", "2020-05-05"));

我两样都进口了

import java.text.SimpleDateFormat;
import java.util.Date;

并在课堂上添加了参数/初始化。我该怎么办?谢谢你的帮助我好像找不到这个信息

编辑教室的属性:

import java.util.Date;

public class Classroom{      
     private String studID;
     private String subjectID;
     private Date dateEnroled;

     public Classroom(String studID, String subjectID, Date dateEnroled)
     {  
        this.studID = studID; 
        this.courseID = subjectID;
        this.dateEnroled = dateEnroled;
     }

共 (2) 个答案

  1. # 1 楼答案

    正如我在评论中提到的,不要使用过时的DateSimpleDateFormat。改用LocalDateDateTimeFormatter。查看this了解更多详细信息

    按如下方式操作:

    import java.time.LocalDate;
    
    class Classroom {
        private String studID;
        private String subjectID;
        private LocalDate dateEnroled;
    
        public Classroom(String studID, String subjectID, LocalDate dateEnroled) {
            this.studID = studID;
            this.subjectID = subjectID;
            this.dateEnroled = dateEnroled;
        }
        // Getters, setters, hashCode, equals and toString
    }
    
    public class Main {
        public static void main(String[] args) {
            myClassroom.addEnrolment(new Classroom("502","424", LocalDate.parse("2020-05-12"));
        }
    }
    
  2. # 2 楼答案

    您需要一个接受字符串的构造函数,如下所示:

    public Classroom(String studID, String subjectID, String dateEnroled)
    {  
        this.studID = studID; 
        this.courseID = subjectID;
        this.dateEnroled = new java.text.SimpleDateFormat("yyyy-MM-dd")
                           .parse(dateEnroled);
    }