Если это вообще кому-то может пригодиться, то вот алгоритм перевода реального времени 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");
}
}