Правилно ли работи този код?

DirectX

Registered
PHP:
<?
$d1=date("Y"); // 2012
$d4=$d1+1; // 2013
$d2=$d1-1; // 2011
$d3="$d2-$d1"; // 2011-2012
$date=date("d.m");

if($date < 01.09) { echo "$d3"; }
else { echo "$d1-$d4"; }
?>
целта е след 01.09 да изкарва текущата година в случая и следващата (2012-2013) а преди 01.09 да изкарва (2011-2012)
 

palex

Registered
Не знам дали осъзнаваш, че с кода $date < 01.09 не сравняваш дати, а стринг или дроб. С днешна дата сравнението изглежда така: 09.01 < 01.09 и съответно резултата е false, а логиката ти изисква true. Когато сравняваш дати и доста по-лесно да работиш с UNIX Timestamp и работещият ти код би изглеждал така:
PHP:
$d1=date("Y"); // 2012
$d4=$d1+1; // 2013
$d2=$d1-1; // 2011
$d3="$d2-$d1"; // 2011-2012
$date=time();

if($date < strtotime( date("Y-09-01") )) { echo "$d3"; }
else { echo "$d1-$d4"; }

но в конкретния случай аз бих го направил в малко по-кратък вид:

PHP:
$schoolyear = (date("m")<9) ? (date("Y")-1)."-".date("Y") : date("Y")."-".(date("Y")+1);
echo $schoolyear;
 

Горе