Не правильно читает дату из базы данных

141
20 сентября 2019, 02:00

На JAVA написан школьный журнал там есть фио, дата, предмет, оценка. Все данные от берет базы данных SQL, но только дату он не так отображает вообще другие цифры. День и месяц правильно отображет, только год по другому. В чем может быть проблема. Допустим в базе данных дата - 10.12.18. В JAVA он выводит 10.12.118

package school.database;
import java.util.ArrayList;
import java.util.Date;
public class Grade {
    private String subject;
    private int value;
    private Date date;
    public Grade(String subject, int value, Date date) {
        this.subject = subject;
        this.value = value;
        this.date = date;
    }
    static ArrayList<Grade> getGradesForSubject(Grade[] grades, String subject) {
        ArrayList<Grade> result = new ArrayList<>();
        for (Grade grade : grades) {
            if (grade.subject.equals(subject)) result.add(grade);
        }
        return result;
    }
    static ArrayList<Grade> getGradesForDate(Grade[] grades, String date) {
        ArrayList<Grade> result = new ArrayList<>();
        for (Grade grade : grades) {
            if (grade.date.toString().equals(date)) result.add(grade);
        }
        return result;
    }
    static String[] getDatesHeaders(Student student) {
        ArrayList<String> result = new ArrayList<>();
        result.add("Предмет");
        for (Grade grade : student.getGrades()) {
            String dateStr = grade.getDateAsString().toString();
            if (!result.contains(dateStr))
                result.add(dateStr);
        }
        return result.toArray(new String[0]);
    }
    static String[] getSubjects(Student student) {
        ArrayList<String> result = new ArrayList<>();
        for (Grade grade : student.getGrades()) {
            if (!result.contains(grade.getSubject())) result.add(grade.getSubject());
        }
        return result.toArray(new String[0]);
    }
    public String getSubject() {
        return subject;
    }
    public int getValue() {
        return value;
    }
    public Date getDate() {
        return date;
    }
    public String getDateAsString() {
        return (date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()) + "." +
                (date.getMonth() + 10 >= 1 ? (date.getMonth() + 1) : ("0" + (date.getMonth() + 1))) + "." +
                date.getYear();
    }
    @Override
    public String toString() {
        return "" + value;
    }
}
Answer 1

Сначала - про год:

https://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getYear()

надо прибавить 1900 -

public String getDateAsString() {
  ...
  (date.getYear() + 1900);
}

Теперь про месяц:

  ( (date.getMonth() >= 9)? (date.getMonth() + 1) : ("0" + (date.getMonth() + 1)) ) + "." +
READ ALSO
Прозрачный текст с белым бордером

Прозрачный текст с белым бордером

Каким образом достичь данного результата?

121
Как нарисовать линию и чтоб вторая начиналась в середине первой?

Как нарисовать линию и чтоб вторая начиналась в середине первой?

В итоге мы должны иметь три координаты которые можно изменять и одну фиксированную в середине первой линииМой код может только рисовать...

100
Найти элемент в массиве

Найти элемент в массиве

Функция проверяет массив на элемент

108