Toon posts:

[php] Datums vergelijken.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok heel simel ik wil weten of :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
// datums zijn net statisch dus ken dd/mm/yyyy worden
// maar ook yyyy/dd/mm als 't moet =)

if ($DatumA >= $DatumB) {

    //dan doe iets

} else {

    //ga verder

}
?>

Nu heb ik reeds vanalles geprobeert (ook uit de manual) maar kom d'r nie uit. :'(

Verwijderd

Probeer deze indeling voor de datum: YYYYMMDD.
Wanneer je ook de tijd erin op wilt nemen wordt het: YYYYMMDDHHms (alles achter elkaar, dan heb je een getal, en dan kun je dmv. groter en kleiner dan, datums vergelijken)

(Ik heb even aangenomen dat je weet hoe je de datum uitleest met PHP)

Verwijderd

Topicstarter
Ok, nu weet ik niet meer zeker of mijn eerste manier nu wel of niet werkte, kan iemand even testen of het volgende werkt :
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
// $Form 2/1/3 = mm/dd/yyyy

if (date("U", mktime(0,0,0,$Form[VP12],$Form[VP11],$Form[VP13])) >= date("U", mktime(0,0,0,$Form[VP15],$Form[VP14],$Form[VP16]))) {

    echo date("U", mktime(0,0,0,$Form[VP12],$Form[VP11],$Form[VP13]));
    echo " >= ";
    echo date("U", mktime(0,0,0,$Form[VP15],$Form[VP14],$Form[VP16]));

}
?>

:?

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hier kijk ik dus of het aantal seconden (U) verschilt (toch :)).

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Waarom werk je niet met een unix timestamp dat werkt vele malen beter.

zie: mktime functie en de
date functie

edit:
dat doe je ook......

Verwijderd

Kort uitgelegd:
je maakt een cel in je db die als soort "timestamp" heeft. Daar gooi je als datum time() in (dus bijv. $date = time(); en dan $date erin proppen). $date is een getal, nl. het aantal sec vanaf 1 januari 1970. Je kan nu die seconen vergelijken. Als je er dan weer een normale datum van wilt maken, gebruik je bijv de functie
$datum = $date("U", $time); (ik neem aan dat je de regel al uit de db hebt gevist).

Nou moet het lukken :P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Uit de php manual bij www.php.net/mktime
mktime -- Get UNIX timestamp for a date
Oftewel.... die hele date() call heb je niet nodig, de timestamp is het aantal seconden sinds 1 januari 1970.

Bovendien roep je beide date(... mktime()) constructies 2 keer aan.

Wat netter en efficienter is is:
PHP:
1
2
3
4
5
6
7
8
9
<?
// $Form 2/1/3 = mm/dd/yyyy
$date1 = mktime(0,0,0,$Form[VP12],$Form[VP11],$Form[VP13]);
$date2 = mktime(0,0,0,$Form[VP15],$Form[VP14],$Form[VP16]);
if($date1 >= $date2)) 
{
    echo $date1 . " >= " . $date2; // of echo "$date1 >= $date2";
}
?>
Pagina: 1