Как повернуть изображение цикла день / ночь на 360 ° в зависимости от реального времени дня? - PullRequest
0 голосов
/ 29 января 2019

пример круга дня / ночи: https://i.ibb.co/fFskJ28/exmp.png

Я хочу, чтобы изображение круга дня / ночи (пример по ссылке выше) вращалось на основев режиме реального времени (+1 UTC, без корректировки зимнего / летнего времени).Время, которое вы видите на изображении, уже основано на времени +1 UTC.Я уже успел сделать эту работу в своем проекте по созданию игр, но теперь я также хочу, чтобы это изображение дня / ночи было на моем веб-сайте, чтобы посетители могли также видеть цикл дня / ночи в прямом эфире.

У меня уже естьрабочий код написан на GML, но теперь я хочу его на PHP / Javascript, и я мало что знаю о Javascript, но я думаю, что это необходимо использовать, если я хочу, чтобы изображение цикла день / ночь вращалось в реальном времени.

Итак, вот мой рабочий код, написанный на GML:

//written in GML
// unix_timestamp([datetime])
//
//  Returns a Unix timestamp for the current time
//  or optionally given GameMaker datetime value.
{
    var timezone = date_get_timezone();

    date_set_timezone(timezone_utc);

    if (argument_count > 0) {
        var datetime = argument[0];
    } else {
        var datetime = date_current_datetime();
    }

    var timestamp = round(date_second_span(25569, datetime));

    date_set_timezone(timezone);

    return timestamp;
}

Следующая часть немного запутанна, но делает все, что я хочу, делая переменные 'hour' и 'minute' равными реальнымвремя час / минута в моей стране (+1 UTC)

//written in GML

rtime = unix_timestamp();

//removing all seconds from 1 jan 1970 00:00 - 1 jan 2019 00:00 (UTC+1 Amsterdam)
rtime2 = (rtime - 1546300800+3600);//the +3600 is meant to add 1 hour to
 equalise to the UTC+1 time


//remove all remaining days
{
while (rtime2 >= 86400)
   {
   rtime2 -= 86400;
   }
}

dtime = unix_timestamp();

//removing all seconds from 1 jan 1970 00:00 - 1 jan 2019 00:00 (UTC+1 Amsterdam)
dtime2 = (dtime - 1546300800+3600);//the +3600 is meant to add 1 hour to
 equalise to the UTC+1 time


//number of days from 1 jan 2019 00:00
day_unf = (dtime2 / 86400);
day = (floor(day_unf) + 1);

//count all remaining hours
hour_unf = (rtime2 / 3600);

hour = (floor(hour_unf))

qtime = unix_timestamp();

//removing all seconds from 1 jan 1970 00:00 - 1 jan 2019 00:00 (UTC+1 Amsterdam)
qtime2 = (qtime - 1546300800+3600);//the +3600 is meant to add 1 hour to
 equalise to the UTC+1 time

//remove all remaining days
{
while (qtime2 >= 86400)
   {
   qtime2 -= 86400;
   }
}

removar = (hour * 60)

//count all remaining minutes
minute_unf = (qtime2 / 60);
minute_unf2 = (minute_unf - removar);

minute = (floor(minute_unf2))


xtime = unix_timestamp();

//removing all seconds from 1 jan 1970 00:00 - 1 jan 2019 00:00 (UTC+1 Amsterdam)
xtime2 = (xtime - 1546300800+3600);//the +3600 is meant to add 1 hour to 
equalise to the UTC+1 time


//remove all remaining days
{
while (xtime2 >= 86400)
   {
   xtime2 -= 86400;
   }
}

rem = (minute * 60);

rem2_unf = (hour * 3600);

xtime3 = (xtime2 - rem);
second = (xtime3 - rem2_unf);

if hour == 24{
    hour = 0;
}
//written in GML
pre1 = 15 * hour;
pre2 = 0.25 * minute;
pre3 = pre1 + pre2;
cycle_angle = pre3;
//cycle_angle is always a number between 0-360 and is used below to draw the day/night circle image in the right rotation degree.

draw_sprite_ext(spr_day_night_cycle,0,960,80,image_xscale*1.5,image_yscale*1.5,cycle_angle,c_white,image_alpha);

Поскольку изображение представляет собой круг с углом 360 ° и представляет время одного целого дня 24 часа, каждый проходчас равен 15 ° вращения, а каждая минута равна 0,25 ° вращения.Например, когда время 18:30, оно поворачивается на 277,5 ° (15 * 18 + 30 * 0,25), представляя, что наступит день, но закат близок.

Так что мои вопросыявляются:

Вопрос 1: Как сделать переменные «час» и «минута» в PHP / Javascript на основе часов / минут реального времени в моей стране (+1UTC, корректировка зимнего / летнего времени не требуется)

Вопрос 2: Если мне удастся ответить на вопрос 1, как я могу повернуть свое дневное / ночное изображение круга на веб-сайте в зависимости от часа'и' минутные 'переменные, как я сделал в GML? (см. Пример GML ниже)

//written in GML
pre1 = 15 * hour;
pre2 = 0.25 * minute;
pre3 = pre1 + pre2;
cycle_angle = pre3;
//cycle_angle is always a number between 0-360 and is used below to draw the day/night circle image in the right rotation degree.

draw_sprite_ext(spr_day_night_cycle,0,960,80,image_xscale*1.5,image_yscale*1.5,cycle_angle,c_white,image_alpha);

1 Ответ

0 голосов
/ 05 июня 2019

В PHP:

$date = new \DateTime();
$date->format('Y-m-d H:i:s'); //returns a string

В объекте DateTime намного больше функций; читайте об этом здесь

В JS:

var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds(); 

Затем вы можете использовать эти значения и использовать CSS для поворота изображения на 0-360 градусов, используя transform: rotate(360deg);

...