php, как добавить месяцы к дате? [Дубликат]

Он возвращает список, подобный массиву.

Вы делаете этот массив как пример

var el = getElementsByClassName("elem");
el = Array.prototype.slice.call(el); //this line
el[0].appendChild(otherElem);  
3
задан John Conde 7 June 2012 в 04:19
поделиться

5 ответов

Это ошибка 2038 , которая похожа на y2k, где системы не могут обрабатывать даты после этого года из-за 32-битных ограничений. Вместо этого используйте класс DateTime , который работает над этой проблемой.

Для PHP 5.3 +

$date = new DateTime('1980-02-15');
$date->add(new DateInterval('Y75'));
echo $date->format('Y-m-d');

Для PHP 5.2

$date = new DateTime('1980-02-15');
$date->modify('+75 year');
echo $date->format('Y-m-d');
5
ответ дан John Conde 22 August 2018 в 10:02
поделиться
  • 1
    как добавить 75 лет к заданной строке "1980-02-15" используя класс datetime? – Zurechtweiser 7 June 2012 в 03:44
  • 2
    См. Мой обновленный ответ – John Conde 7 June 2012 в 03:49
  • 3
    Благодарю. Я получаю Неустранимая ошибка: вызов неопределенной функции date_add (). Я использую PHP Version 5.2.17. – Zurechtweiser 7 June 2012 в 03:51
  • 4
    Ааа. Для этого требуется 5.3. Lemme посмотрим, могу ли я найти пример 5.2. – John Conde 7 June 2012 в 03:52
  • 5
    Хорошо, нашел альтернативу для PHP 5.2 – John Conde 7 June 2012 в 03:54

Даты PHP ограничены диапазоном от 01-01-1970 до 19-01-2038. Вам придется использовать другой метод для работы с датами.

PEAR имеет класс Date: PEAR Date

1
ответ дан Graeme Wicksted 22 August 2018 в 10:02
поделиться

75 лет с 1980 года - 2055, что превышает наивысшее значение даты, которое может быть представлено в 32-битовом целое. Поэтому результат становится равным 0, что является наблюдаемой в 1970 году.

0
ответ дан Niet the Dark Absol 22 August 2018 в 10:02
поделиться

strtotime () использует временную метку unix, поэтому она переполняется, если она пытается вычислить годы за пределами 2038 года и возвращается к 1970 году.

Чтобы обойти это, используйте объект DateTime. http://php.net/manual/en/book.datetime.php

Чтобы добавить период времени к объекту DateTime, используйте DateTime :: add, который принимает DateInterval в качестве параметра. http://php.net/manual/en/datetime.add.php http://www.php.net/manual/en/class.dateinterval.php

$date = new DateTime("1980-02-15");
if (method_exists("DateTime", "add")) {
    $date->add(new DateInterval("Y75"));
} else {
    $date->modify("+75 years");
}
echo $date->format("Y-m-d");
3
ответ дан Vulcan 22 August 2018 в 10:02
поделиться
  • 1
    как добавить 75 лет к заданной строке "1980-02-15" используя класс datetime? – Zurechtweiser 7 June 2012 в 03:46
  • 2
    @Richart Bremer Добавлены ссылки, которые показывают, как это сделать. – Vulcan 7 June 2012 в 03:47
  • 3
    Благодарю. Я получаю Неустранимая ошибка: вызов неопределенного метода DateTime :: add (). Я использую PHP Version 5.2.17. – Zurechtweiser 7 June 2012 в 03:53
  • 4
    :: add только в 5.3+. Вы хотите вызвать :: modify на нем с параметром строки, подобным тому, который вы использовали бы для strtotime. – Vulcan 7 June 2012 в 03:55
  • 5
    Код в моем ответе теперь будет корректно работать на 5.2 или 5.3+. – Vulcan 7 June 2012 в 03:57

Для отметки времени unix максимальное время представления составляет 2038-01-19. В 03:14:07 UTC.

Таким образом, вы не можете представлять / управлять временем, которое над ним, используя временную метку.

1
ответ дан xdazz 22 August 2018 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: