Допустим, у меня есть дата в следующем формате: 2010-12-11 (год-понедельник-день)
С помощью PHP я хочу увеличить дату на один месяц, и я хочу, чтобы год автоматически увеличивался, если это необходимо (т.е. с декабря 2012 года по январь 2013 года).
С уважением.
Мне понадобился аналогичный функционал, за исключением месячного цикла (плюс месяцы минус 1 день). После некоторого поиска SO я смог создать это решение plug-n-play:
Пример:
источник
Используйте
DateTime::add
.Я использовал clone, потому что add изменяет исходный объект, что может быть нежелательно.
источник
это возвращает метку времени, которую можно использовать с функцией даты
источник
$time
имеет начальное значение).Это компенсирует февраль и другие 31-дневные месяцы. Конечно, вы могли бы сделать гораздо больше проверок, чтобы получить более точные форматы относительной даты «этот день в следующем месяце». (что, к сожалению, не работает, см. Ниже), и вы также можете использовать DateTime.
Оба
DateInterval('P1M')
иstrtotime("+1 month")
, по сути, слепо добавляют 31 день, независимо от количества дней в следующем месяце.источник
Вы можете использовать
DateTime::modify
это так:См. Документацию:
http://php.net/manual/fr/datetime.modify.php
http://php.net/manual/fr/class.datetime.php
источник
php > var_dump((new DateTime('2010-05-31'))->modify('+1 month')); object(DateTime)#2 (3) { ["date"]=> string(26) "2010-07-01 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }
Я использую такой способ: -
источник
Сначала установите формат даты, например, 12-12-2012.
После использования этой функции она работает нормально;
Здесь 12-12-2012 - ваша дата, а +2 месяца - это приращение месяца;
Вы также увеличиваете год, дату
Ответ 12-12-2013
источник
Спасибо, Джейсон, твой пост был очень полезен. Я переформатировал его и добавил больше комментариев, чтобы помочь мне все это понять. Если это кому-то поможет, я разместил его здесь:
источник
Если вы хотите увеличить по дням, вы также можете это сделать
источник
Просто обновите ответ простым способом, чтобы найти дату через несколько месяцев. Поскольку отмеченный лучший ответ не дает правильного решения.
источник
Примеры использования:
источник
Для всех, кто ищет ответ на любой формат даты.
Просто измените формат даты.
источник
Если вы хотите получить дату через месяц, вы можете сделать это так
Если вы хотите получить дату через два месяца, вы можете добиться этого, выполнив следующие действия.
И так далее, вот и все.
источник
введите дату в поле ввода, затем нажмите кнопку получить день с даты в jquery
источник
источник
Все представленные решения не работают должным образом.
strtotime () и DateTime :: add или DateTime :: modify иногда дают неверные результаты.
Примеры:
- 31.08.2019 + 1 месяц дает 01.10.2019 вместо 30.09.2019
- 29.02.2020 + 1 год дает 01.03.2021 вместо 28.02.2021
(проверено на PHP 5.5, PHP 7.3)
Ниже представлена моя функция, основанная на идее, опубликованной Анджело, которая решает проблему:
Примеры использования:
источник