PHP datum differenz

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
490
hallo!

ich möchte die differenz zweier datumswerte ermitteln. leider kommt nur quatsch dabei raus..

hier mein code

Code:
$alt = strtotime($row['date']);
																	 echo echo (date("Y-m-d",time()) - $alt);

$row['date'] ist der datumswert in einem array aus einer datenbank, welches ich im script zuvor auslese und hat hat folgendes format: zB "2011-03-18"
mit date("Y-m-d",time()) hole ich mir das aktuelle datum von heute, im gleichen format.. richtig?
so, davon die differenz und dann sollte ja 29 in dem fall jetzt rauskommen. es wird aber der wert "-1300400789" ausgegeben.
wo ist der fehler?
 
strtotime wandelt das Datum in die Einheit Sekunden um. Beide Daten strtotime, subtrahieren und Ergebnis wieder auf Einheit Tage umrechnen
 
PHP:
$datetime = strtotime($row['date']);

$datenow = strtotime(date("Y-m-d",time()));

$differenz = $datetime - $datenow;
$differenz = $differenz / 86400;

echo $differenz;

Ungetestet!

Sollte aber so gehen.
 
Zuletzt bearbeitet:
ok, danke.
mit volcems methode bekomme ich halbwegs brauchbare ergebnisse, alle werte sind negativ und nicht natürlich, also zum beispiel -21.9583333333. muss das also noch runden und *( -1) nehmen..

*edit
$differenz = $datetime - $datenow;
ist verkehrt rum :) damit wär das problem mit den negativen zahlen erledigt. nur runden muss man noch
 
Zuletzt bearbeitet:
wenn es sich bei der ominäsen datenbank um sql handelt, kann man die datumsdifferenz auch gleich die datenbank machen lassen.

ich rate einmal ins blaue und verlinke auf die mysql funktion: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

ansonsten sollte jede db in der lage sein ein datumsfeld in den unix timestamp umzuwandeln und mit der gleichen logik wie in php die differenz in tage berechnet werden ;)
 
Code:
$differenz = $datetime - $datenow;

naja nicht sehr sinnvoll xD
da $datenow immer größer is als $datetime
solange man nciht in zukunft rechnen will xD

wür da eher

Code:
$differenz =  $datenow - $datetime;

machen

dann sparste dir *-1
 
Naja ging vorhin alles ein wenig schnell, Variablen vertauscht, deswegen ja "ungetestet."...

Man kann sich auch an Sachen hochziehe, zumal der Fehler ja bereits behoben wurde bzw hier gepostet!

-.-
 
SELECT
(TO_DAYS(NOW()) - TO_DAYS(zeit)) (Oder wie auch immer die Spalte heisst)
AS
differenzInTagen
FROM ...
WHERE ...

Dann hat man in seiner Abfrage in
$row["differenzInTagen"]
die Differenz der Tage zu Heute.

So nutzt man das was MYSQL einem bietet :)

Lg,
heldiX
 
Zuletzt bearbeitet:
Viele Wege führen nach Rom ;)

Der Unterschied ist in der Geschwindigkeit aber so gering, dass es fast egal ist. ( Bei diesem Beispiel )
 
Zurück
Oben