Поиск последнего дня предыдущего месяца в PHP
33341 просмотра
5 ответа
Я немного не уверен, почему это не в состоянии найти последний день предыдущего месяца. Кажется, что все шаги работают правильно, кроме тех случаев, когда создается окончательная дата.
<?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
возвращается 2012-09-30, как и ожидалось; однако, после попытки конвертировать его в 30 сентября 2012 года - $newLastDateOfMonth
возвращается 1 октября 2012 года. Где я, кажется, иду не так?
РЕДАКТИРОВАТЬ: При использовании date("t/m/Y", strtotime("last month"));
или date('Y-m-d', strtotime('last day of previous month'));
будет ли любой из них все еще жизнеспособным, учитывая 2013-01-01, то есть они будут учитывать изменения в году?
Ответы (5)
74 плюса
echo date('Y-m-d', strtotime('last day of previous month'));
//2012-09-30
или же
$date = new DateTime();
$date->modify("last day of previous month");
echo $date->format("Y-m-d");
Позднее редактирование: документация php.net - относительные форматы для strtotime (), DateTime и date_create ()
Автор: Mihai Iorga Размещён: 01.10.2012 01:1720 плюса
Для этого есть функция php.
echo date("t/m/Y", strtotime("last month"));
Автор: Lea
Размещён: 01.10.2012 01:19
4 плюса
Первый день этого месяца, минус 1 секунда.
echo date('Y-m-d',strtotime('-1 second',strtotime(date('m').'/01/'.date('Y'))));
Пример тут .
Автор: wesside Размещён: 01.10.2012 01:191 плюс
Вы можете использовать strtotime()
нулевую функциональность обработки для достижения этого также:
# Day Before
echo date('Y-m-d', strtotime('2016-03-00')); // 2016-02-29
# Year can be handled too
echo date('Y-m-d', strtotime('2016-01-00')); // 2015-12-31
# Month Before
echo date('Y-m-d', strtotime('2016-00-01')); // 2015-12-01
# Month AND Day
echo date('Y-m-d', strtotime('2016-00-00')); // 2015-11-30
Имеет смысл, если вы думаете о 00 как «один меньше, чем первый (01)».
Таким образом, для достижения цели этого вопроса «последний день предыдущего месяца» является простым случаем
date('your_format', strtotime('YYYY-ThisMonth-00'));
# So:
date('Y-m-d', strtotime('2016-11-00')); // 2016-10-31
Автор: Dan Streeter
Размещён: 26.11.2016 09:57
0 плюса
пожалуйста, попробуйте с ответом ниже.
код:
echo date("t/m/Y", strtotime(date('Y-m')." -1 month"));
Вы получите последний день предыдущих 12 месяцев.
Пример:
<?php
for ($i = 1; $i <= 12; $i++) {
$months[] = date("t/m/Y l", strtotime(date('Y-m')." -$i months"));
}
print_r($months);
?>
Выход:
Array
(
[0] => 30/11/2018 Monday
[1] => 31/10/2018 Friday
[2] => 30/09/2018 Wednesday
[3] => 31/08/2018 Sunday
[4] => 31/07/2018 Thursday
[5] => 30/06/2018 Tuesday
[6] => 31/05/2018 Saturday
[7] => 30/04/2018 Thursday
[8] => 31/03/2018 Monday
[9] => 28/02/2018 Monday
[10] => 31/01/2018 Friday
[11] => 31/12/2017 Tuesday
)
Автор: stalinrajindian
Размещён: 19.12.2018 02:35
Вопросы из категории :
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- php How can I find unused functions in a PHP project
- php Эффективное изменение размера JPEG изображения в PHP
- php MySQL или PDO - каковы плюсы и минусы?
- php Как бы вы внедрили аутентификацию на основе FORM без резервной базы данных?
- php Самый простой способ профилировать скрипт PHP
- php Изображения в PHP
- datetime Как рассчитать чей-то возраст в C #?
- datetime DateTime.Now лучший способ измерить производительность функции?
- datetime Как я могу получить DateTime для начала недели?
- datetime Как преобразовать DateTime в VarChar
- datetime Как преобразовать локальное время в UTC в Python?
- datetime Отображение даты / времени в формате локали пользователя и смещения времени
- datetime Каков стандартный способ добавить N секунд для datetime.time в Python?
- datetime Как вернуть только дату из типа данных SQL Server DateTime
- datetime Учитывая объект DateTime, как мне получить дату ISO 8601 в строчном формате?
- datetime Преобразование года с 4 цифр на 2 цифры и обратно на C #