I think you'll have to give strtotime
some other (and/or additional) information.
For instance, the number of the day you want in march :
$nextMarch = strtotime("1 march");
var_dump($nextMarch, date('Y-m-d H:i:s', $nextMarch));
But you'll get march this year :
int 1235862000
string '2009-03-01 00:00:00' (length=19)
So, to get "next" march, i.e., next year :
$nextMarch = strtotime("1 march +1 year");
var_dump($nextMarch, date('Y-m-d H:i:s', $nextMarch));
And you get :
int 1267398000
string '2010-03-01 00:00:00' (length=19)
So, maybe you'll have to do some calculation by yourself, to know whether you want this year or the next one. Something like this might do the trick:
$nextMarch = strtotime("1 march");
if ($nextMarch < time()) {
$nextMarch = strtotime("1 march +1 year");
}
var_dump($nextMarch, date('Y-m-d H:i:s', $nextMarch));
(I don't really like this idea, but it seems to be working -- even though a simpler solution would definitely be nice...)