Как я могу проверить, является ли год bisect (т.е. високосным) в php?
Вы можете использовать функцию date () PHP для этого …
// L will return 1 or 0 for leap years echo date('L'); // use your own timestamp echo date('L', strtotime('last year')); // for specific year $year = 1999; $leap = date('L', mktime(0, 0, 0, 1, 1, $year)); echo $year . ' ' . ($leap ? 'is' : 'is not') . ' a leap year.';
Дай мне знать, если это трюк для тебя, Привет!
UPDATE: добавлен пример для конкретного года
Год биссект – другое название для високосного года . Используйте формат L
, где $year
– год, который вы тестируете:
echo (date('L', strtotime("$year-01-01")) ? 'Yes' : 'No');
Чтобы скорректировать несоответствие между календарем и сезонами, юлианский календарь использовал расчеты греческого астронома Сосигена и основывался на принятии 365,25 дней в году: 3 года 365 дней, за которым следует 366 дней в году, добавляется дополнительный день всегда после 24 февраля (sexto ante calendas Martiis = шестой день до мартовских календ), называемый bis sexto (шестой день бис), отсюда и названия биссектного года и двухпользовательский день для високосного дня. Год был разделен на 12 месяцев, который чередовался 31 и 30 дней, а февраль в обычные годы составлял 29 дней и 30 дней в биссектные годы.
Позже, когда восьмой месяц был посвящен императору Августу (август), в этом месяце был сделан 31 день, чтобы сопоставить июль, месяц, посвященный Юлию Цезарю. Вот почему февраль состоял из 28 дней, имея 29 дней в биссектные годы.
http://news.softpedia.com/news/The-History-of-Modern-Calendar-and-Bisect-Year-79892.shtml
function is_leap_year($year) { return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0))); }
Использование класса DateTime
:
$year = 2000; $isLeap = DateTime::createFromFormat('Y', $year)->format('L') === "1"; var_dump($isLeap); // bool(true)