• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

LocalDateTime

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Hallo ich Arbeire grade mit LocalDateTime und will Jetzt mal als z.B abfragen ob es schon Länger als 5 minuten her ist das der Spieler seine Belohnung abgeohlt hat nur leider geht die ABfrage nicht und will euch fragen ob ihr eine Lösung habt

Code:
Code:
 if (now.minusMinutes(5).isBefore((ChronoLocalDateTime) gettime(player.getUniqueId().toString())) == true){

Fehler:
 
Zuletzt bearbeitet:
Lösung
Ich habe das Ganze jetzt mit parse gelöst

String db = (java.lang.String) gettime(player.getUniqueId().toString());
LocalDateTime parse = LocalDateTime.parse(db);

und dann habe ich es einfach in der if abfrage zusammen gesatzt wie obhen angeben

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Was funktioniert daran nicht? Stacktrace? Mehr Code (z.B. Signatur von SQLAbfrage$gettime und was für ein typ ist "now" und wie holst du das?

Ansonsten empfehl ich dir java.time.Instant, das ist die API aus Java 8 und im großen und ganzen einfacher als LocalDateTime.
 

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Also ich will ja Abfragen ob der Spieler in den Letzten 5 MInuten seine Belohnung geholt hat aber die Abfrage dafür geht nicht wenn ich die Belohnung abholen möchte bekomme ich nur einen Fehler wie oben sohn angegeben

gettime:
public static CharSequence gettime(String uuid) {
        try {
            PreparedStatement st = MySQL.con.prepareStatement("SELECT * FROM Daily WHERE UUID = ?");
            st.setString(1, uuid);
            ResultSet rs = st.executeQuery();
            if (rs.next()) {
                return rs.getString("time");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return uuid;
    }

now:
LocalDateTime now = LocalDateTime.now();
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Ganz übersehen.
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.time.chrono.ChronoLocalDateTime

Wüsste jetzt nicht, was ich da mehr zu sagen soll, außer Grundlagen Java lernen. Das solltest du doch in der Zwischenzeit können...
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
1. Da kann ich auch gleich Googel Benutzen
Genau das war die Idee.
2. habe ich mich auch schon lange versucht selber duch diesen Fehler schlau zu werden haben es aber nicht geschaft
Du kannst nicht einfach irgendwelche Klassen wild durch die Gegend casten.
Ein String ist nunmal kein Datum und wenn du das in ein Datum verwandeln möchtest, solltest du das auch der Datenbank sagen oder den String in eine Datum verwandeln.

Das alles ist aber wirklich Grundlagen Java, was man in den ersten Kapiteln jedes Java Kurses lernt.
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Genau? Oder du speicherst ein Datum ab und liest einen Timestamp oder ein Datum aus?

Du weißt also, was dein Problem ist. Du weißt auch, wonach du googeln könntest. Und da gibt es genug Antworten zu deinen Fragen.
Ich werde jedenfalls nicht den Code für dich schreiben, das darfst du alleine machen. Das Forum ist auch weniger dafür gedacht, dass du fertige und funktionierende Codeschnipsel auf simple Java-Fragen bekommst, sondern dass du Fragen bei der Programmierung los werden kannst.

Das Informationen sammeln, verarbeiten und interpretieren gehört zum Programmieren dazu. Wenn du mit den gegebenen Informationen nichts anfangen kannst, solltest du nochmal von ganz vorne anfangen (Java Tutorial, Kapitel 1) oder vielleicht das mit dem Programmieren sein lassen.

(Btw: Bei deiner SQL-Funktion könntest du noch das Statement schließen)
 

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Ich habe das Ganze jetzt mit parse gelöst

String db = (java.lang.String) gettime(player.getUniqueId().toString());
LocalDateTime parse = LocalDateTime.parse(db);

und dann habe ich es einfach in der if abfrage zusammen gesatzt wie obhen angeben
 
Oben