La méthode format ne tient pas compte de la "locale"
seule la fonction strftime en tient compte
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
</head>
<body>
<?php
$date = new DateTime("2018-02-22 00:00:00", new DateTimeZone("Europe/Paris"));
setlocale(LC_TIME, 'french'); // sous Windows
//echo $date->format('d M'); // 22 Mars
echo utf8_encode(strftime("%e %b", $date->getTimestamp()));
//echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));
?>
</body>
</html>
le mois de février pose problème à cause de son accent aigu qu'il faut convertir en UTF-8
d'où la partie html pour forcer le charset.
sinon le setlocale dépend fortement du système utilisé
on ne sais jamais trop quoi mettre "fr-FR" , "baguette-camembert" ça marche pas trop