Mise à jour: Désolé, mon mauvais. "next" fonctionne avec des jours et dans des cas comme "next month" mais pas "next mars" donc c'est un peu plus alambiqué que le premier single original.
strtotime()
est vraiment génial pour des choses comme ceci:
$tests = array(
strtotime('2 february'),
strtotime('4 april'),
strtotime('9 november'),
);
foreach ($tests as $test) {
echo date('r', $test) . ' => ' . date('r', nextmj($test)) . "\n";
}
function nextmj($time = time()) {
$march = strtotime('1 march', $time);
$june = strtotime('1 june', $time);
if ($march >= $time) {
return $march;
} else if ($june >= $time) {
return $june;
} else {
return strtotime('+1 year', $march);
}
}
Sortie:
Mon, 02 Feb 2009 00:00:00 +0000 => Sun, 01 Mar 2009 00:00:00 +0000
Sat, 04 Apr 2009 00:00:00 +0000 => Mon, 01 Jun 2009 00:00:00 +0000
Mon, 09 Nov 2009 00:00:00 +0000 => Mon, 01 Mar 2010 00:00:00 +0000
Voir aussi What date formats does the PHP function strtotime() support?
C'est exactement que je cherchais! Bravo pour le seul paquebot! – Nirmal
Oups ... Mais strtotime ('next mars') ne fonctionne pas et ne jette même pas d'erreur. – Nirmal
Hah, cela a résolu toute la requête! Merci. – Nirmal