Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, високосный ли год

Короткий ответ

Символ L в формате даты равен 1 для високосного года:

<?php
 
function isLeapYear(int $year): bool
{
    return date('L', mktime(0, 0, 0, 1, 1, $year)) === '1';
}
 
var_dump(isLeapYear(2024), isLeapYear(2026));

Результат:

bool(true)
bool(false)

Через 29 февраля

checkdate() проверяет, существует ли такая дата:

<?php
 
var_dump(checkdate(2, 29, 2024), checkdate(2, 29, 2100));

Результат:

bool(true)
bool(false)

Само правило

Год високосный, если делится на 4, но не на 100 — либо делится на 400:

<?php
 
$year = 2000;
 
var_dump($year % 4 === 0 && ($year % 100 !== 0 || $year % 400 === 0));

Результат:

bool(true)

Функции из этого ответа

  • date — Форматирует дату и время.
  • checkdate — Проверяет, существует ли такая дата.
  • mktime — Собирает метку времени из отдельных частей даты.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.