Date Probleme

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Date Probleme

    Hallo,

    ich benutze für mein Projekt OHMySQL zum Verbinden meiner App mit einer MySQL Datenbank. Ich hole mir unter anderem auch Datums Felder aus der Datenbank. Komischerweise ist es aber so, das in der Datenbank z.B. der 13.12.2022 (tt.MM.yyyy) steht, aber nach dem ich es in ein Swift Date gewandelt habe, ist der Wert 12.12.2022 23:00:00 +0000

    Mein Code:

    Quellcode

    1. if (response != nil) {
    2. response?.forEach({ r in
    3. let arrivalDateString:String = r["arrivalDate"] as? String ?? ""
    4. let departureDateString:String = r["departureDate"] as? String ?? ""
    5. let dateFormatter = DateFormatter()
    6. dateFormatter.dateFormat = "yyyy-MM-dd"
    7. dateFormatter.timeZone = TimeZone(identifier: "Europe/Berlin")
    8. person.arrivalDate = dateFormatter.date(from: arrivalDateString) ?? Date()
    9. person.departureDate = dateFormatter.date(from: departureDateString) ?? Date()
    10. person.id = r["id"] as! Int32
    11. person.lastname = String(data: r["lastname"] as! Data, encoding: .utf8) ?? ""
    12. person.firstname = String(data: r["firstname"] as! Data, encoding: .utf8) ?? ""
    13. person.casenumber = r["casenumber"] as! Int32
    14. person.table = r["table"] as! Int32
    15. person.seat = r["seat"] as! Int32
    16. person.specialDiet = r["special_diet"] as! Int32
    17. person.tokenid = r["tokenid"] as! Int64
    18. })
    Alles anzeigen

    Die Debugausgabe:
    Bildschirm­foto 2022-12-14 um 07.17.13.png


    In der Datenbank:
    Bildschirmfoto.jpg

    Ich habe irgendwie keine Idee warum das so ist. Hat von euch jemand eine Idee?

    Grüße und Danke schon mal!

    Dirk
  • das liegt daran, dass dein Server und der Client unterschiedliche Zeitzonen haben. Wenn du deine App jetzt in UK testest wird alles stimmen, fährst du nach Amerika wird es noch schlimmer :)

    deshalb muss du dir erstmal klar werden wie denn jetzt die Daten in unterschiedlichen Zeitzonen gehandelt werden sollen. Deine MySQL dB speichert standardmäßig immer alles in UTC.
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    das liegt daran, dass dein Server und der Client unterschiedliche Zeitzonen haben. Wenn du deine App jetzt in UK testest wird alles stimmen, fährst du nach Amerika wird es noch schlimmer :)

    deshalb muss du dir erstmal klar werden wie denn jetzt die Daten in unterschiedlichen Zeitzonen gehandelt werden sollen. Deine MySQL dB speichert standardmäßig immer alles in UTC.
    Diese App wird nur in "Europe/Berlin" benutzt werden. Muss ich meine Zeitzone in der App auch auf UTC stellen?
  • Ich würde in der App die Zeit auf Basis der Locale anzeigen und intern / im Backend immer mit UTC arbeiten: Der Aufwand ist minimal und spätestens wenn ein Benutzer in eine andere Zeitzone reist (oder die App doch einmal international wird), wird es sonst unschön.

    Quick & dirty beißt einen kurz über lang immer in den Hintern :)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.