Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Datum subtrahieren
Frage
Habe mal ne Frage: kann man folgendes machen ??
$verbleibend = date(Y-m-d)-$termin;
$termin ist ein Datum im Format 0000-00-00 (ich überprüfe vorher ob es nicht leer ist und ob es nicht 0000-00-00 ist, sonst bekomme ich lauter Fehler)
Jetzt funktioniert es zwar, aber ich bekomme ziemlich komische Ergebnisse.
Daher wollte ich Fragen ob man es so machen kann oder ob man das anders machen muss.
Habe schon in ziemlich vielen Foren gesucht und auch massenweise Manuals durchgelesen aber nichts gefunden.
Wisst ihr da etwas ??
mfg.
Tomham
Antwort 1 von disco
moin
du willst von einem datum ein datum abziegen?
also bspw. (20.10.2003)-(5.3.1980)? was willst du den da für ein ergebnis bekommen? das macht ja schon logisch keinen sinn. du kannst von einem datum tage,monate, oder jahre abziehen. aber kein anderes datum. daten kann man nur miteinander vergleichen.
g,
disco
du willst von einem datum ein datum abziegen?
also bspw. (20.10.2003)-(5.3.1980)? was willst du den da für ein ergebnis bekommen? das macht ja schon logisch keinen sinn. du kannst von einem datum tage,monate, oder jahre abziehen. aber kein anderes datum. daten kann man nur miteinander vergleichen.
g,
disco
Antwort 2 von tomham
ich will den unterschied in Tagen erhalten.
Also aus 21.07.2005 - 18.07.2005 soll 3 rauskommen oder bei 21.07.2005 - 21.06.2005 soll 30 rauskommen (über monate hinweg die tage ausrechnen)
oder aus 21.07.2005 - 21.07.2004 soll 365 rauskommen (über jahre hinweg die tage)
Und da ich nicht weiß wie ich das machen soll habe ich einfach nur subtrahiert.
Habe in PHP keine solche Funktion gefunden die mit die Differenz in Tagen zurückgibt.
mfg.
Tomham
Also aus 21.07.2005 - 18.07.2005 soll 3 rauskommen oder bei 21.07.2005 - 21.06.2005 soll 30 rauskommen (über monate hinweg die tage ausrechnen)
oder aus 21.07.2005 - 21.07.2004 soll 365 rauskommen (über jahre hinweg die tage)
Und da ich nicht weiß wie ich das machen soll habe ich einfach nur subtrahiert.
Habe in PHP keine solche Funktion gefunden die mit die Differenz in Tagen zurückgibt.
mfg.
Tomham
Antwort 3 von disco
ahso, also die different in tagen. benutze php nicht so oft, dass ich weiss ob es da was standartmässig gibt, aber notfalls ist das ja uch relativ schnell selbst geschrieben.
aber da du ja mit ner mysql DB arbeitest, kannst du diese ja dafür missbrauchen.
TO_DAYS(datum) gibt die die anzahl der tage ab dem tage 0 zurück (gregorianisch gesehen). somit kannst du die differenz der tage mit sql so bekommen. TO_DAYS(datum1)-TO_DAYS(datum2)
format: yyyy-mm-dd
http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
g,
disco
aber da du ja mit ner mysql DB arbeitest, kannst du diese ja dafür missbrauchen.
TO_DAYS(datum) gibt die die anzahl der tage ab dem tage 0 zurück (gregorianisch gesehen). somit kannst du die differenz der tage mit sql so bekommen. TO_DAYS(datum1)-TO_DAYS(datum2)
format: yyyy-mm-dd
http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
g,
disco
Antwort 4 von Nessus
$utimeDatum1= mktime(0, 0, 0, 1, 1, 2000); // 1. Januar 2000
$utimeDatum2= time (); // Jetzt
$diff= $utimeDatum2 - $utimeDatum1;
printf ("Seit dem %s sind %d Tage bis heute vergangen\n",
date (´d.m.Y´, $utimeDatum1),
($diff / 86400)
);Nessus
Antwort 5 von tomham
Ich bins wieder. Habe das jetzt so ausprobiert wie Nessus geschrieben hat, aber es funktioniert nicht. Bekomme da die ganze Zeit einen Fehler in der Zeile wo steht
$diff= $utimeDatum2 - $utimeDatum1;
Weiß auch nicht warum, ist ein Parse Error.
Disco: Ich habe zwar eine MySQL-DB, aber so wie du es geschrieben hast (und so wie es im Referenzhandbuch steht) kann ich es für meine Zwecke ncith benutzen (schreibe und lese immer gleich alle Felder in einem Ruck, sind immerhin 20)
Also würde ich mich freuen wenn es irgendwas anderes geben würde ...
mfg.
Tomham
$diff= $utimeDatum2 - $utimeDatum1;
Weiß auch nicht warum, ist ein Parse Error.
Disco: Ich habe zwar eine MySQL-DB, aber so wie du es geschrieben hast (und so wie es im Referenzhandbuch steht) kann ich es für meine Zwecke ncith benutzen (schreibe und lese immer gleich alle Felder in einem Ruck, sind immerhin 20)
Also würde ich mich freuen wenn es irgendwas anderes geben würde ...
mfg.
Tomham
Antwort 6 von disco
moin
also zu nessus methode kann ich nichts sagen, weil ich das noch nie benutzt habe. aber ich glaube kaum, dass er hier was falsches erzählt. wahrscheinlich packst du das datum aus der db, bzw. aus deinem formular falsch in das mktime. dadurch dein parse-error. quellcode wäre gut.
auch wenn du alles in einem ruck machst (was ja auch richtig ist), kannst du ja trotzdem im gleichen oder einem anderen sql befehl diese rechnung mit durchführen.
g,
disco
also zu nessus methode kann ich nichts sagen, weil ich das noch nie benutzt habe. aber ich glaube kaum, dass er hier was falsches erzählt. wahrscheinlich packst du das datum aus der db, bzw. aus deinem formular falsch in das mktime. dadurch dein parse-error. quellcode wäre gut.
auch wenn du alles in einem ruck machst (was ja auch richtig ist), kannst du ja trotzdem im gleichen oder einem anderen sql befehl diese rechnung mit durchführen.
g,
disco
Antwort 7 von tomham
habe meinen Fehler gefunden !
Statt
muss es heißen:
Hatte die Hochkomma vergessen. Jetzt gehts.
Aber trotzdem danke für eure Hilfe.
mfg.
Tomham
Statt
$verbleibend = date(Y-m-d)-$termin;muss es heißen:
$verbleibend = date(´Y-m-d´)-$termin;Hatte die Hochkomma vergessen. Jetzt gehts.
Aber trotzdem danke für eure Hilfe.
mfg.
Tomham

