2010-03-24 5 views
4

J'essaie la commande suivante en PHP 5.2.12:PHP strtotime (aaaa-mm dernier jour) un mois de congé erreur

print (date('Y-m-d', strtotime('2009-12 last day'))); 

En ce qui concerne la php.net manual:

date('m/d/y', strtotime('2009-03 last day')); # 03/31/09 

il se doit afficher le dernier jour de mars 2009 (2009-03-31)!

Le mien retourne-t-il le dernier jour du mois précédent? Pourquoi ? :

2009-11-30 
+1

ce n'est pas manuel, qui est juste après l'utilisateur. vous pouvez lui demander directement, je suppose que http://stackoverflow.com/users/111362/katylava – SilentGhost

+0

Fonctionne correctement sur mon mac (php 5.3): 2009-12-31 –

Répondre

9

Le code que vous avez publié échoue de la manière que vous avez décrite; il semble que la description dans les pages de manuel de PHP (qui, comme mentionné par SilentGhost est juste un commentaire d'utilisateur) est un code non vérifié.

Si vous avez besoin du dernier jour d'un mois donné, essayez ceci:

date('Y-m-d', strtotime("2009-12 next month - 1 hour")); 
+3

J'utilise toujours 12 heures, juste au cas où quelqu'un déciderait Ce jour de l'heure d'été est le premier ou le dernier jour de chaque mois. –

2

Si vous utilisez PHP 5.3 essayez d'utiliser la classe DateTime:

<?php 
    $date = new DateTime("2009-03-01"); 
    $date->modify("last day of previous month"); 
    echo $date->format("m/d/y"); 
?> 

Il doit être 5.3 comme $date->modify("last day of previous month"); ne fonctionnera pas dans 5.2. * Ou plus tôt.

0

Je pense que vous utilisez simplement le format relatif de manière incorrecte, cela fonctionne pour moi:

echo date('m/d/y', strtotime('last day of 2009-12')); 

De the docs:

'last day' ' of'? - Définit le jour au dernier jour du courant mois. Cette phrase est mieux utilisée avec un nom de mois qui suit. - "last day of next month"

0

date("Y-m-t", strtotime("201512"));

Pour Décembre ici à 2015