С днём программиста (заранее)!

Владимир Коток
На сайте с 04.12.2011
Offline
136
273
С наступающим, коллеги! 🙂

Ежегодное поздравление с Днём программиста, с корректным учётом високосных годов.

Шорткод для WorrdPress:

function day_of_programmer_shortcode() {
    // Устанавливаем временную зону на Московское время
    date_default_timezone_set('Europe/Moscow');

    // Получаем текущую дату
    $current_date = new DateTime();
    $current_year = $current_date->format('Y');

    // Определяем дату Дня программиста для текущего года
    if (($current_year % 4 == 0 && $current_year % 100 != 0) || ($current_year % 400 == 0)) {
        // Високосный год
        $day_of_programmer = new DateTime("$current_year-09-12");
    } else {
        // Невисокосный год
        $day_of_programmer = new DateTime("$current_year-09-13");
    }

    // Устанавливаем начало и конец отображения поздравления
    $start_date = clone $day_of_programmer;
    $end_date = clone $day_of_programmer;
    $end_date->modify('+1 day');

    // Проверяем, находится ли текущая дата в пределах Дня программиста
    if ($current_date >= $start_date && $current_date < $end_date) {
        return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>';
    }

    return ''; // Если не День программиста, ничего не выводим
}

// Регистрируем шорткод
add_shortcode('day_of_programmer', 'day_of_programmer_shortcode');


🟢 Сайт за 24 часа с готовым доменом и хостингом — от 100 руб/мес — 👍 https://best-master.su 🎄✨👌
Александр Воробьев
На сайте с 03.02.2020
Offline
55
#1
Владимир Коток :
unction day_of_programmer_shortcode() {

Как вариант (правда не тестил)

function day_of_programmer_shortcode(): string
{
    $date = mktime(0, month: 9, day: 12);
    if (255 === (int)date('z', $date)) {
        $date += 86400;
    }
    $nextDate = $date + 86400;
    $now = time();
    if ($now >= $date && $now < $nextDate) {
        return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>';
    }
    return '';
}
Александр Воробьев
На сайте с 03.02.2020
Offline
55
#2

И еще вариант

function day_of_programmer_shortcode(): string
{
    $data = explode(' ', date('Ymd z', mktime(0, month: 9, day: 12)));
    [$date, $number] = array_map('intval', $data);
    if ($number === 255) {
        ++$date;
    }
    if ($date === (int)date('Ymd')) {
        return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>';
    }
    return '';
}

Все, пожалуй пора идти работать, а то завтра в фонтаны нырять....

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий