Trouver Dernier Jour du Mois Précédent en PHP
Je suis un peu incertain pourquoi ce n'est pas en mesure de trouver le dernier jour du mois précédent. Toutes les étapes semble fonctionner correctement, sauf lorsque la date finale est créé.
<?php
$currentMonth = date('n');
$currentYear = date('Y');
if($currentMonth == 1) {
$lastMonth = 12;
$lastYear = $currentYear - 1;
}
else {
$lastMonth = $currentMonth -1;
$lastYear = $currentYear;
}
if($lastMonth < 10) {
$lastMonth = '0' . $lastMonth;
}
$lastDayOfMonth = date('t', $lastMonth);
$lastDateOfPreviousMonth = $lastYear . '-' . $lastMonth . '-' . $lastDayOfMonth;
$newLastDateOfMonth = date('F j, Y', strtotime($lastDateOfPreviousMonth));
?>
$lastDateOfPreviousMonth
est de retour 2012-09-30 comme prévu; cependant, après avoir essayé de le convertir au 30 septembre, 2012 - $newLastDateOfMonth
est de retour le 1er octobre 2012. Où ai-je l'air d'aller mal?
EDIT: Si vous utilisez date("t/m/Y", strtotime("last month"));
ou date('Y-m-d', strtotime('last day of previous month'));
sera l'une de ces encore être viable compte tenu de 2013-01-01, c'est à dire vont-ils tenir compte du changement dans l'année?
- Mon calendrier a seulement 30 jours (en septembre et en avril, juin et novembre) - tout le reste, 31 - sauf pour le mois de février (où l'année % 4 ? 28 : 29 est une bonne approximation, mais ne scanne pas, sans parler de la rime)
- Haha oui j'ai juste pris aussi, juste une faute de frappe - il fixe.
Vous devez vous connecter pour publier un commentaire.
ou
Plus tard edit: php.net la documentation relative de formats pour la fonction strtotime(), DateTime et date_create()
DateTime
et de le modifier pour$date = new DateTime('2013-01-01');
il sera de sortie:2012-12-31
$date = new \DateTime("last day of previous month");
?Il y a une fonction php pour cela.
echo date('F j, Y', strtotime(date("Y-m-t", strtotime("last month"))));
pour le faire fonctionner.date('F t, Y', strtotime(last month));
et encore reçu le 30 septembre 2012date("Y-m-t", strtotime("last month", strtotime($currentDate)));
donnera dernier jour du mois précédent où$currentDate
peut être n'importe quelle date.strtotime("last month");
ne fonctionne pas vraiment le 31 de chaque moisPremier jour de ce mois, moins 1 seconde.
Exemple ici.
Vous pouvez utiliser
strtotime()
s'zéro fonctionnalité de gestion pour atteindre cet aussi:A de sens que si vous pensez à 00 'un de moins que le premier (01)'.
Afin d'atteindre l'objectif de cette question, " dernier jour du mois précédent est un cas simple de
veuillez essayer avec-dessous de la réponse.
code:
Vous obtiendrez dernier jour de cours des 12 mois précédents.
Exemple:
De sortie:
strtotime("-1 months")
Cela ne fonctionne pas si il y a 31 jours.