TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

Rechnen mit Datum


Autor Nachricht
Verfasst am: 25. 02. 2012 [19:28]
Tarta
Themenersteller
Dabei seit: 14.08.2004
Beiträge: 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:

PHP
$object = $query
			 ->matching(
					$query->logicalAnd(
						$query->greaterThanOrEqual("datum", $datum),
                                                $query->lessThanOrEqual("datum",($datum+86399)),
						$query->equals("kunde", $kunde)
					)
				 )
			 ->execute()
			 ->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
Profil
Verfasst am: 27. 02. 2012 [11:04]
RockyWolverine
Dabei seit: 18.01.2011
Beiträge: 6
Hallo Tarta

Nach der DateTime-Spezifikation von PHP müsste das mit der add-Methode funktionieren.
DateTime::add


PHP
$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.

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


Hoffe das löst dein Problem.

Gruss Marc
Profil
Verfasst am: 27. 02. 2012 [19:06]
Tarta
Themenersteller
Dabei seit: 14.08.2004
Beiträge: 28
Perfekt, das löst das Problem.

Vielen Dank für die Hilfe!

Profil
Verfasst am: 01. 03. 2012 [08:32]
BFSven
Dabei seit: 19.10.2011
Beiträge: 106
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
Profil