php: переход на следующий год минус 1 день - PullRequest
1 голос
/ 20 января 2012

Проблема: я использую strtotime для продвижения на 364 дня в будущем, но у меня возникают проблемы с високосными годами.

Пример: сегодня 20 января 2012 г. - Мне нужен PHP, чтобы вычислить для меня временную метку от 19 января 2013 года.

Если я просто добавлю

strtotime ("+ 364 дня");

Я правильно получаю 18 января 2013 г. - но для кода, который я пишу, мне не нужно учитывать високосные годы, и поэтому я ожидаю получить 19 января 2013 г.

Какой-нибудь быстрый и грязный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 20 января 2012

strtotime() учитывает високосный год.

заменить strtotime("+364 days"); на strtotime('+1 year -1 day');

примечание: не все хотят читать кучу комментариев, чтобы получить ответ

0 голосов
/ 20 января 2012

Вы также можете попробовать проверить, является ли год високосным или нет, а затем добавить это +/- 1 день

<?php

function is_leap()
{
    $year = date('Y');
    $check = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
    return $check;
}

$year = (is_leap()) : strtotime("+365 days") ? strtotime("+364 days")

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...