Перевод реального времени в игровое

Если это вообще кому-то может пригодиться, то вот алгоритм перевода реального времени 24-часового формата в игровое (0-24000 тика) с соответствием времени суток. Для корректной работы может понадобиться установить часовой пояс:

 date_default_timezone_set("Europe/Moscow");

Вся логика в функции getTicks(), остальное там для удобства

class Calendar {

    private const TIME_OFFSET = 18;
    private const TICKS_MODIFIER = 1000;
    private const TICKS_CYCLE = 24000;

    public static function getHour() : int {
        return (int)date("H");
    }

    public static function getMinute() : int {
        return (int)date("i");
    }

    public static function getSecond() : int {
        return (int)date("s");
    }

    public static function getYear() : int {
        return (int)date("Y");
    }

    public static function getMonth() : int {
        return (int)date("m");
    }

    public static function getDay() : int {
        return (int)date("d");
    }

    public static function getTicks() : int {
        $ticks = (self::getHour() + (self::getMinute() / 60) + self::TIME_OFFSET) * self::TICKS_MODIFIER;
        while($ticks / self::TICKS_CYCLE > 1) {
            $ticks -= self::TICKS_CYCLE;
        }
        return (int)floor($ticks);
    }

    public static function getTime() : string {
        return date("H:i");
    }

    public static function getDate() : string {
        return date("d.m.Y");
    }

}
2 лайка

ого спасибо!!!

ладно ставь не московское время так уж и быть тебе можно

вау ты такой умный

да я а что

ладно

да я кастил строку в число и что ты мне сделаешь

ладно на самом деле я не проверял половину из этого

ударю па галаве

ладно я ради тебя поменяю формат на mm

ладно

ачо

ладно

ничо я угараю

так а почему “m” возвращает месяц числом если в доках это месяц прописью

москва европа шок

m Порядковый номер месяца с ведущим нулём от 01 до 12

пхп момент, для разных функций разный формат

image
image

почему H m s што