Так, на всякий случай.
Разобрался с правильным отображением новолуний и полнолуний.
Всегда теперь показывает следующее ближайшее. Т.е. Если ново/полно луние уже прошло, будет выводиться дата-время в следующем месяце.
Если еще нет, то ближайшая в этом месяце.
Код: Выделить всё
include("./MoonPhase.php");
// create an instance of the class, and use the current time
$moon = new MoonPhase();
//$age = round( $moon->age(), 1 );
$age = round( $moon->age(), 0 );
$stage = $moon->phase() < 0.5 ? 'растущая' : 'убывающая';
$distance = round( $moon->distance(), 2 );
if($moon->new_moon()>time()){
$nextnewtime = date( 'G:i:s', $moon->new_moon() ); // gmdate - по Гринвичу, date - местное время
$nextnewdate = date( 'd.m.Y', $moon->new_moon() );
}else{
$nextnewtime = date( 'G:i:s', $moon->next_new_moon() ); // new_moon текущая, next_new_moon следующая
$nextnewdate = date( 'd.m.Y', $moon->next_new_moon() );
}
if($moon->full_moon()>time()){
$nextfulltime = date( 'G:i:s', $moon->full_moon() ); // full_moon текущая, next_full_moon следующая
$nextfulldate = date( 'd.m.Y', $moon->full_moon() );
}else{
$nextfulltime = date( 'G:i:s', $moon->next_full_moon() );
$nextfulldate = date( 'd.m.Y', $moon->next_full_moon() );
}
$phasename = $moon->phase_name(); // Название фазы
sg('MoonAge',$age); //Возраст луны (лунный день)
sg('MoonStage',$stage); //Стадия луны (растущая/убывающая)
sg('MoonDistance',$distance); //Дистанция до луны
sg('MoonNextNewTime',$nextnewtime); //Время следующего новолуния
sg('MoonNextNewDate',$nextnewdate); //Дата следующего новолуния
sg('MoonNextFullTime',$nextfulltime); //Время следующего полнолуния
sg('MoonNextFullDate',$nextfulldate); //Дата следующего полнолуния
sg('MoonPhaseName',$phasename); //Фаза луны
sg('SysInfo.MoonPhaseName',$phasename);//Передача значении в класс ScenePurple
За это отвечают вон те 2 IF в середине. Если уже было, сорри. Не заметил.