JSFiddle - React, Tailwind, and code Playground
HTML
<div id="countdown" ></div>
<div id="countdown1" ></div>
JavaScript
fetch("https://cors-anywhere.herokuapp.com/http://worldclockapi.com/api/json/utc/now")
.then(response => response.json())
.then(v => new Date(v.currentDateTime))
.then(processDate);
function processDate(serverDate) {
const EVENT = {
DAY: 5, // Пн - 1, Вт - 2, ..., Сб - 6, Вс - 7
HOUR: 19,
MINUTE: 0
};
const SECOND = 1000;
const MINUTE = 60 * SECOND;
const HOUR = 60 * MINUTE;
const DAY = 24 * HOUR;
const WEEK = 7 * DAY;
const MOSCOW_ZONE = 3 * HOUR;
const EVENT_TIME = EVENT.DAY * DAY - 4 * DAY + EVENT.HOUR * HOUR + EVENT.MINUTE * MINUTE - MOSCOW_ZONE;
const clientDate = new Date();
const now = serverDate.getTime() - clientDate.getTime();
clockTick();
function clockTick() {
const date = new Date(Date.now() + now);
const eventDate = new Date(Math.ceil((date.getTime() - EVENT_TIME) / WEEK) * WEEK + EVENT_TIME);
const dt = eventDate - date;
if(dt > WEEK && dt < WEEK - SECOND) {
// по пятницам в 19:00:00, т. е. в первую секунду игры
location.reload();
}
if(dt > WEEK - 45 * MINUTE && dt < WEEK - 45 * MINUTE - SECOND) {
// по пятницам в 19:45:00, т. е. на 45-ой минуте игры
}
if(dt > WEEK - 49 * MINUTE && dt < WEEK - 49 * MINUTE - SECOND) {
// по пятницам в 19:49:00, т. е. на 49-ой минуте игры
}
if(dt > WEEK - 50 * MINUTE) {
document.getElementById("countdown").innerHTML =
"Добро пожаловать!!!";
} else if(dt > WEEK - 6 * HOUR) {
document.getElementById("countdown").innerHTML =
"Следующий синхрон через неделю.";
} else {
var days = Math.floor(dt / DAY);
var hours = Math.floor(dt / DAY);
var hours = toPaddedString(Math.floor((dt % DAY) / HOUR));
var minutes = toPaddedString(Math.floor((dt % HOUR) / MINUTE));
var seconds = toPaddedString(Math.floor((dt % MINUTE) / SECOND));
document.getElementById("countdown1").innerHTML =
`До начала синхрона осталось: ${days} дн....