Rechnen mit Datum [Gelöst]

  • Tarta Tarta
    T3PO
    0 x
    28 Beiträge
    0 Hilfreiche Beiträge
    25. 02. 2012, 19:28

    Hallo zusammen,

    ich habe da mal eine Frage zum Extbase DateTime Objekt. Gerne möchte ich in einer Query alle Einträge von einem Tag finden, d.h. alle Einträge, die innerhalb der 24 Stunden eines Tages erfolgt sind. Ansatz ist der folgende:

    1. $object = $query
    2. ->matching(
    3. $query->logicalAnd(
    4. $query->greaterThanOrEqual("datum", $datum),
    5. $query->lessThanOrEqual("datum",($datum+86399)),
    6. $query->equals("kunde", $kunde)
    7. )
    8. )
    9. ->execute()
    10. ->getFirst();

    Bei der Variable $datum handelt es sich um ein DateTime Objekt - offensichtlich kann ich da nicht einfach die 86399 Sekunden drauf addieren. Mit Sicherheit gibt es eine Funktion mit der ich das Ergebnis erzielen kann (Ein DateTime Objekt das 86399 Sekunden höher ist als das ursprüngliche Objekt). Leider finde ich nichts dazu.

    Vielen Dank für die Hilfe.

    Tarta


  • 1
  • RockyWolverine RockyWolv...
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    27. 02. 2012, 11:04

    Hallo Tarta

    Nach der DateTime-Spezifikation von PHP müsste das mit der add-Methode funktionieren.
    [url=http://ch.php.net/manual/de/datetime.add.php]DateTime::add[/url]

    1. $datum->add(new DateInterval('P1D'));

    Das P1D steht dabei für 'Period 1 Day', fügt dem DateTime-Objekt also einen Tag hinzu. Dann kannst du mit lessThan() arbeiten.

    1. $query->lessThan('datum',$datum->add(new DateInterval('P1D')))

    Hoffe das löst dein Problem.

    Gruss Marc

  • Tarta Tarta
    T3PO
    0 x
    28 Beiträge
    0 Hilfreiche Beiträge
    27. 02. 2012, 19:06

    Perfekt, das löst das Problem.

    Vielen Dank für die Hilfe!

  • BFSven BFSven
    R2-D2
    0 x
    106 Beiträge
    2 Hilfreiche Beiträge
    01. 03. 2012, 08:32

    Noch 2 kleine Hinweise, nicht unbedingt für Dich, aber vielleicht für andere die mit dem DateTime-Objekten anfangen, auch wenn das nicht zu Extbase gehört, sondern PHP ist.

    1. Wenn man einen Tag addieren will, dann immer einen Tag addieren und nicht 24 Stunden oder X Minuten oder so. Gibt sonst unter Umständen hässliche Probleme an Tagen mit Zeitumstellung

    2. Falls man doch Einheiten kleiner als 1 Tag addieren/subtrahieren will brauchts noch ein T: 'PT12H' => 12 Stunden. Man kann auch kombinieren, wobei die Einheiten immer kleiner werden müssen (im Verlauf des Strings; doof ausgedrückt,wa?): 'P2DT3H5M' => 2Tage, 3 Stunden, 5 Minuten.

    Gruß Sven

  • 1