Anzeige

Eine Liste mit Geburtsdaten und Alter berechnen.


#1
Hey Lieber Leser,

ich habe ein kleines Problem bezüglich dem Geburtstag,
ich habe in einer Datenbank, den Geburtstag, Geburtsmonat und Geburtsjahr, die möchte ich nun in eine separate Liste packen, um dann Später, wenn einer Geburtstag hat, das Alter zu berechnen.

Weiß jemand wie das gehen könnte?

Java:
ArrayList<MonthDay> Geburtstag = new ArrayList<MonthDay>();

while (rs.next()) {
                int gday = rs.getInt("psn_geburtstag");
                int gmonth = rs.getInt("psn_geburtsmonat");
                int gyear = rs.getInt("psn_geburtsjahr");


               " Hier muss es Hinzugefügt werden, aber wie?"
 
#3
Moinsen,

Weil ich sage ich mal von Mehreren Personen das Geburtsdatum habe, mir ist vorerst keine andere Lösung eingefallen.
Ja, ich könnte es natürlich schon davor, die Daten sind ja in der Datenbank hinterlegt, dann müssten die nur noch als Date heraus gelesen werden.
MonthDay ist eine Typ wie Integer, String etc. nur wie der Name schon sagt, speicherst du damit Monat und Tag,

Mit "Hier" meine ich, dass dort die Geburtsdaten in die Liste reingepackt werden.
 
#4
Moin,
ich könnte es natürlich schon davor, die Daten sind ja in der Datenbank hinterlegt, dann müssten die nur noch als Date heraus gelesen werden.
Das wäre schon mal eine Möglichkeit, die ich immer bevorzugen würde (wobei man halt nicht weiß, wie die Daten VOR dem Speichern bei Dir vorliegen!)

MonthDay ist eine Typ wie Integer, String etc. nur wie der Name schon sagt, speicherst du damit Monat und Tag
Ah, ok, kannte ich noch nicht - habe ich aber aber auch nopch nie vermisst :giggle:
Suchst Du vlt. sowas: http://www.java2s.com/Tutorials/Java/java.time/MonthDay/MonthDay.of_int_month_int_dayOfMonth_.htm

Mit "Hier" meine ich, dass dort die Geburtsdaten in die Liste reingepackt werden.
hmm, wenn Du dort Deine Monthday-Objekte erzeugt hast, dann fügst Du sie halt zur Arraylist hinzu ...
https://www.tutorialspoint.com/java/util/arraylist_add_index.htm

So richtig verstehe ich Dein Problem noch immer nicht :eek:

VG Klaus
 
#5
Die Daten sind in einer Datenbank als Integer Gespeichert also:

Du hast drei Spalten Geburtstag, Geburtsmonat, Geburtsjahr alle als Integer,

Mein Problem ist, dass ich das Jahr nicht dazu bekomme, ich bekomme lediglich den Monat und den Tag, was mir erlaubt nachzufragen, ob die Person heute Geburtstag hat oder nicht Yippie Yahu, aber ich kann das Alter nicht berechnen, da ich das Geburtsjahr dafür brauche. :)
 
#10
Ja die Daten liegen als Integer vor.

Habe beides Probiert,

ArrayList<Date> als auch ArrayList<DateFormat> probiert, und beides gibt mir nur Non-Sense aus....

Java:
ArrayList<Date>   Geburtstag = new ArrayList<Date>();

while(rs.next()){
                Date gday = rs.getDate("Geburtstag");
                Date gmonth = rs.getDate("Geburtsmonat");
                Date gyear = rs.getDate("Geburtsjahr");
                
                Geburtstag.add(gday);
                Geburtstag.add(gmonth);
                Geburtstag.add(gyear);
                
                System.out.format("%s,%s,%s\n", gday,gmonth,gyear);
            }
 
#12
Es gibt mir das aus:

1970-01-01,1970-01-01,1970-01-01
1970-01-01,1970-01-01,1970-01-01
1970-01-01,1970-01-01,1970-01-01
1970-01-01,1970-01-01,1970-01-01
1970-01-01,1970-01-01,1970-01-01

Mit LocalDateTime:

Java:
ArrayList<LocalDateTime>   Geburtstag = new ArrayList<LocalDateTime>();


while(rs.next()){
                LocalDateTime gday1 = rs.getDate("psn_geburtstag");  -->TypeMismatch: cannot convert from Date to LocalDate
                LocalDateTime gmonth2 = rs.getDate("psn_geburtsmonat"); --> Ebenfalls
                LocalDateTime gyear3 = rs.getDate("psn_geburtsjahr"); --> Ebenfalls
                
                Geburtstag.add(gday1);
                Geburtstag.add(gmonth2);
                Geburtstag.add(gyear3);
                
                System.out.format("%s,%s,%s\n", gday1,gmonth2,gyear3);
            }
 
#14
Moin,
Kann ich eine ArrayList<Integer> in Date/LocalDate etc. Konvertieren?
ein klares: kommt darauf an :LOL::confused:
Ein int-Wert kann durchaus einen konkreten Zeitpunkt in Form eines Date repräsentieren!

Ist Dir überhaupt, wie die unterschiedlichen Datumsformate/-typen aufgebaut sind ??
https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
Es gibt also für alles Konvertierungen, die musst Du allerdings ggf. händisch durchführen!
Eine einfache Zuweisung reicht da in KEINEM Fall !!

Vielleicht postest Du mal den Aufbau der Tabelle und auch mehr Code (und zwar bitte immer aktuell, wenn Du was ausprobiert hast) !!
Diese ganze Rätselraterei bringt doch nix!!

VG Klaus
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#15
Hi,

nur mal so am Rande, weiss nicht ob ich es überlesen habe:
Java:
Date gday = rs.getDate("Geburtstag");
Date gmonth = rs.getDate("Geburtsmonat");
Date gyear = rs.getDate("Geburtsjahr");
Warum speicherst du jedes Feld (Tag, Monat, Jahr) in einzelnen Spalten der Tabelle?
Warum nimmst du nicht eine Spalte mit Typ "DATE", anstatt 3x "INT"?

Wenn du schon INT als Typ hast, musst du die Daten auch so aus dem ResultSet rausziehen:
Java:
int gday = rs.getInt("Geburtstag");
int gmonth = rs.getInt("Geburtsmonat");
int gyear = rs.getInt("Geburtsjahr");

LocalDate birthday = LocalDate.of(gyear, gmonth, gday);
Und das Alter einer Person kannst du übrigens auch von MySQL berechnen lassen, das musst du nicht in Java machen:
https://stackoverflow.com/a/19522129/1164913

Grüsse,
BK

// Edit: Natürlich nicht "getDate", sondern "getInt"...
 
Zuletzt bearbeitet:
#16
qqqqqqqwqwewqe.PNG

Das ist die Tabelle

@Bratkartoffel

Hey

Java:
int gday = rs.getInt("Geburtstag");
int gmonth = rs.getInt("Geburtsmonat");
int gyear = rs.getInt("Geburtsjahr");

LocalDate birthday = LocalDate.of(gyear, gmonth, gday); -->The method of(int, int, int) is undefined for the type LocalDate
 
Zuletzt bearbeitet:

HonniCilest

Erfahrenes Mitglied
#20
Anzeige