Comment obtenir le dernier jour du mois en PHP?
Donné:
$a_date = "2009-11-23"
Je veux le 2009-11-30; et étant donné
$a_date = "2009-12-23"
Je veux le 2009-12-31.
t
renvoie le nombre de jours dans le mois d'une date donnée (voir la documentation pourdate
):
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
DateTime
vous pouvez faire quelque chose comme ça:(new DateTime('2009-11-23'))->modify('last day of')
Le code utilisant strtotime () échouera après l'année 2038. (comme indiqué dans la première réponse de ce fil) Par exemple, essayez d'utiliser ce qui suit:
Il donnera la réponse comme: 1970-01-31
Ainsi, au lieu de strtotime, la fonction DateTime doit être utilisée. Le code suivant fonctionnera sans problème de l'année 2038:
la source
strtotime
code me donne ce résultat: 2040-11-30Je sais que c'est un peu tard mais je pense qu'il existe une façon plus élégante de le faire
PHP 5.3+
en utilisant la classe DateTime :la source
$date = new DateTime('last day of 2020-2');
$date = DateTime::createFromFormat('m/d/Y', '1/10/2014');
Il y a aussi la fonction PHP intégrée cal_days_in_month () ?
la source
Cela devrait fonctionner:
la source
Quel est le problème - Le plus élégant pour moi est d'utiliser
DateTime
Je me demande je ne vois pas
DateTime::createFromFormat
, one-linerla source
Vous pouvez créer une date pour le premier du mois suivant, puis utiliser
strtotime("-1 day", $firstOfNextMonth)
la source
mktime(0, 0, 0, $month+1, 0, $year);
strtotime()
etmktime()
est découragée bec. de bogues connus comme la détermination de la date en bordure des mois et les calculs des années bissextiles. Étant donné queDateTime
est disponible, vous devez utiliser cette classe pour éviter tout problème à l'avenir. Comme je l'ai dit à plusieurs reprises avant moi, ces deux fonctionsstrtotime()
etmktime()
échoueront après 2038. C'est pourquoi j'ai rétrogradé ...Essayez ceci, si vous utilisez PHP 5.3+,
Pour trouver la date du mois prochain, modifiez comme suit,
etc..
la source
Votre solution est là ..
la source
31
pourSeptember
lequel, comme vous le savez, ce n'est pas correct.Vous pouvez trouver le dernier jour du mois de plusieurs façons. Mais vous pouvez simplement le faire en utilisant la fonction PHP strtotime () et date () . J'imagine que votre code final ressemblerait à ceci:
Démo en direct
Mais si vous utilisez PHP> = 5.2, je vous suggère fortement d'utiliser le nouvel objet DateTime. Par exemple comme ci-dessous:
Démo en direct
En outre, vous pouvez résoudre ce problème en utilisant votre propre fonction comme ci-dessous:
la source
Si vous utilisez l' extension Carbon API pour PHP DateTime, vous pouvez obtenir le dernier jour du mois avec:
la source
$date->day = 0;
Vous pouvez également l'utiliser avec datetime
la source
la source
Utiliser Zend_Date c'est assez simple:
la source
la source
Voici une fonction complète:
Cela donnerait la sortie suivante:
Sortie: 28
la source
Il existe des moyens d'obtenir le dernier jour du mois.
la source
Une autre façon d'utiliser mktime et non date ('t'):
Donc, de cette façon, il calcule soit 31,30 soit 29
la source
Je suis en retard, mais il existe plusieurs façons simples de procéder, comme mentionné:
Utiliser mktime () est mon choix pour un contrôle complet sur tous les aspects du temps ... IE
Mettre le jour à 0 et déplacer votre mois vers le haut 1 vous donnera le dernier jour du mois précédent. 0 et les nombres négatifs ont l'effet similaire dans les différents arguments. PHP: mktime - Manuel
Comme certains l'ont dit, le strtotime n'est pas la voie la plus solide et peu, voire aucun, est aussi facilement polyvalent.
la source
J'utilise strtotime avec cal_days_in_month comme suit:
la source
Je l'ai enveloppé dans ma classe d'aide de date et heure ici https://github.com/normandqq/Date-Time-Helper utilisant
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
Et c'est fait
la source
Extension d'API Carbon pour PHP DateTime
ou
reviendra
la source
http://zkinformer.com/?p=134
la source
C'est une façon beaucoup plus élégante d'obtenir la fin du mois:
la source
Vous pouvez utiliser "
t
" dans la fonction date pour obtenir le nombre de jours dans un mois particulier.Le code ressemblera à ceci:
Le code s'explique de lui-même. Alors j'espère que ça aide.
la source