Datumsvergleich irgendwie fehlerhaft

Kalito

Erfahrenes Mitglied
Hallo,

ich habe folgenden Datumsvergleich.

Code:
//$cycle['Cycle']['valid_from'] = '25.04.2014'
//date('d.m.Y') = '20.06.2014'

if($cycle['Cycle']['valid_from'] <= date('d.m.Y')){
//Tu was
}

Doch leider wird bei der IF-Zweig nicht ausgeführt. Folgender Code funktioniert bei gleiche Variablen aber:
Code:
if($cycle['Cycle']['valid_from'] > date('d.m.Y')){
//Tu was
}

Wie kann das sein?
 
Hi,
du vergleichst zwei Strings miteinander. Wenn du prüfst ob ein String größer als der andere ist, wandelt PHP die Strings in Integer um. bei $cycle['Cycle']['valid_from'] wäre das 25 und bei date('d.m.Y') wäre es 20, sprich 25 > 20 ->> //Tu was ;).

Für einen solchen vergleich wäre es wohl einfacher mit Timestamps zu arbeiten.


edit:

um dir ein eventuelles hin und her zu ersparen, versuch das mal so (ich weiss nicht ob du das Format des Datums das in ...['valid_from'] steckt ändern kannst/möchtest).

$date = explode('.', $cycle['Cycle']['valid_from']);

$dateObj = new DateTime();
$dateObj->setDate($date[2], $date[1], $date[0]);

if($dateObj->getTimestamp() <= time()){
//Tu was
}
 
Zuletzt bearbeitet:
Oder mittels createFromFormat():

PHP:
<?php
$cycle['Cycle']['valid_from'] = '25.04.2014';

$now = new DateTime();
$dt = DateTime::createFromFormat("d.m.Y", $cycle['Cycle']['valid_from']);
if($dt->getTimeStamp() < $now->getTimestamp())
{
   echo "vor jetzt";
}
else
{
   echo "nach jetzt";
}
 
Ohne Kommentar:
PHP:
// Datumsvergleich:
$date1 = date_create('25.4.2014');
$date2 = date_create('20.06.2014');

var_dump($date1 < $date2);
var_dump($date1 == $date2);
var_dump($date1 > $date2);

// => bool(true) bool(false) bool(false)
 

Neue Beiträge

Zurück