• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datumsvergleich in php

Status
Für weitere Antworten geschlossen.

philipp1988

Neues Mitglied
Hi community,

folgende frage

ich habe in einer datenbank ein datum gespeichert Format( yyyy-mm-dd )

und möchte es mit dem heutigen datum überprüfen ob das datum älter ist als 1 tag.

wie könnt ich das lösen?

habe auch schon gegoogelt aber irgendwie sind mir die lösungen mit unix timestamp so komisch ^^

mfg
 
Werbung:
Mit einer if-Abfrage.

Etwa so:
PHP:
<?php
$date = date(d:m:Y);
if($date == $variable['Datum'])
{
 echo'Es stimmt überein';
}
 else
{
 echo'Sind nicht überein...';
}
?>
MfG, matibaski
 
mein folgender quelltext

PHP:
$slct="Select Datum from intern";
$check=mysql_query($slct);
$date=getdate();
$date=date(Y:m:d);
if ($heute == $check)
 echo("UPDATE DRUCK");
else 
echo ("Noch kein Tag um");

Wo is der fehler oO? ^^

edit: in der DB ist das datum 2007-03-21 formatiert
 
Werbung:
Wie schon erwähnt, probier es mit mktime

Ich habe dir Hier zwei Möglichkeiten aufgeschrieben, die nur unmerklich in der Funktionalität differieren

1 - Diese Funktion gibt dir true solange das Datum nicht älter als 24 Stunden ist, sonst false
2 - Diese Funktion gibt dir true zurück, solange dass Datum zwischen 00:00:00 und 23:59:59 Uhr des aktuellen Tages liegt, sonst false

1:
PHP:
<?php
function checkdate($date)
{
  $timearray = explode("-", $date);
  $timestamp = mktime(0, 0, 1, $timearray[1], $timearray[2], $timearray[0]);
  if($timestamp > (time()-(60*60*24)))
  {
    return true;
  }
  else
  {
    return false;
  }
}
?>

2:
PHP:
<?php
function checkdate($date)
{
  $timearray = explode("-", $date);
  $timestamp = mktime(0, 0, 1, $timearray[1], $timearray[2], $timearray[0]);
  $minimum = mktime(0, 0, 0, date('m'), date('d'), date('y'));
  $maximum = mktime(23, 59, 59, date('m'), date('d'), date('y'));
  if($timestamp > $minimum && $timestamp < $maximum)
  {
    return true;
  }
  else
  {
    return false;
  }
}
?>
 
mein folgender quelltext

PHP:
$slct="Select Datum from intern";
$check=mysql_query($slct);
$date=getdate();
$date=date(Y:m:d);
if ($heute == $check)
 echo("UPDATE DRUCK");
else 
echo ("Noch kein Tag um");
Wo is der fehler oO? ^^

edit: in der DB ist das datum 2007-03-21 formatiert
Braucht man da nicht zuerst noch mysql_num_rows() bei $check
 
Werbung:
Probier es doch einfach so:
PHP:
<?php
function checkdate($date)
{
  $timearray = explode("-", $date);
  $timestamp = mktime(0, 0, 1, $timearray[1], $timearray[2], $timearray[0]);
  $minimum = mktime(0, 0, 0, date('m'), date('d'), date('y'));
  $maximum = mktime(23, 59, 59, date('m'), date('d'), date('y'));
  if($timestamp > $minimum && $timestamp < $maximum)
  {
    return true;
  }
  else
  {
    return false;
  }
}
$check=mysql_query("SELECT Datum FROM intern") or die (mysql_error());
while($date = mysql_fetch_assoc($check))
{
  $checkdate = $date["Datum"];
}
if (!checkdate($checkdate))
  echo("UPDATE DRUCK");
else
  echo ("Noch kein Tag um"); 
?>
 
Wie schon erwähnt, probier es mit mktime

Ich habe dir Hier zwei Möglichkeiten aufgeschrieben, die nur unmerklich in der Funktionalität differieren

1 - Diese Funktion gibt dir true solange das Datum nicht älter als 24 Stunden ist, sonst false
2 - Diese Funktion gibt dir true zurück, solange dass Datum zwischen 00:00:00 und 23:59:59 Uhr des aktuellen Tages liegt, sonst false

1:
PHP:
<?php
function checkdate($date)
{
  $timearray = explode("-", $date);
  $timestamp = mktime(0, 0, 1, $timearray[1], $timearray[2], $timearray[0]);
  if($timestamp > (time()-(60*60*24)))
  {
    return true;
  }
  else
  {
    return false;
  }
}
?>

2:
PHP:
<?php
function checkdate($date)
{
  $timearray = explode("-", $date);
  $timestamp = mktime(0, 0, 1, $timearray[1], $timearray[2], $timearray[0]);
  $minimum = mktime(0, 0, 0, date('m'), date('d'), date('y'));
  $maximum = mktime(23, 59, 59, date('m'), date('d'), date('y'));
  if($timestamp > $minimum && $timestamp < $maximum)
  {
    return true;
  }
  else
  {
    return false;
  }
}
?>
rofl:
PHP:
if($timestamp > $minimum && $timestamp < $maximum)
Wenn das true ergibt gibst du auch true zurück, richtig?
Wenn das false ergibt gibst du auch false zurück, richtig?
Ja.
Warum dann nicht gleich?
PHP:
return $timestamp > $minimum && $timestamp < $maximum;
//bzw
return $timestamp > time()-60*60*24;
Achja, falls du`s noch nich wusstest, Punktrechnung vor strichrechnung gilt auch in Programmiersprachen ;) Also kann brauch man doch wohl nich unnötige Klammern um`s Produkt setzen.

@philipp1988: Benutzt du nicht timestamp als format für`s Datum in der Db, denn ansonsten bekommt man doch gleich nen timestamp aus der Db, dann bräuchte man dieses schreckliche explode net.. Aber naja, jedem das seine..
Und eigentlich könnte man das dann auch mit DATE_SUB(), das ist ne mysql Funktion machen und würde auch wirklich nur die Datensätze auslesen, die man benötigt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben