Как настроить таймер на javascript — время до открытия магазина?
Можно всё считать в локальной временной зоне. Известно смещение от UTC времени магазина. Текущее смещение посетителя от UTC получаем через getTimezoneOffset(). 
Задача получить два объекта времени: открытия и закрытия магазина, во временной зоне браузера посетителя.
Если какой-то из двух оказался в прошлом, добавляем ему один день, чтобы оба оказались в будущем. Который из двух оказался меньше – подскажет, открыт сейчас магазин или закрыт.Решениеfunction tillItOpens() {
  const D = new Date();
  const shopOffsetMin = 5 * 60; // GMT+5
  const myOffsetMin = D.getTimezoneOffset();
  const diffMin = shopOffsetMin + myOffsetMin;
  

  function futureDate(hours, fixMin) {
    const d = new Date();
    d.setHours(hours);
    d.setMinutes(0 + fixMin);
    d.setSeconds(0, 0);
    if (d < new Date()) d.setDate(d.getDate() + 1);
    return d;
  }

  
  const dOpens = futureDate(9, diffMin);
  const dCloses = futureDate(21, diffMin);

  if (dOpens < dCloses) {
    // скоро откроется
    const hours = Math.floor((dOpens - D) / 36e5);
    const minutes = Math.floor((dOpens - D) / 6e4) - 60 * hours;
    
    return `до открытия ${hours}:${minutes}`
    
  } else {
    // сейчас открыто
    return "Сейчас открыто!";
    // хорошо ещё посмотреть, сколько остаётся до закрытия - успеет ли чел.
    // ближайшее закрытие – объект dCloses
  }
}
Если сейчас закрыт, запускайте таймер обратного отсчёта до объекта dOpens – он означает время открытия в текущей таймзоне.
https://megatimer.ru/ Воспользуйся сервисом и не морочь себе голову