Recreator
@Recreator

Как посчитать время из JSON, зная разницу с UTC?

Всем привет!
Решил тут сделать краткий справочник по странам и собрал JSON. Данные в нем выглядят так:
...
{
    "country": "Sri Lanka",
    "phoneCode": "+94",
    "capital": "Colombo",
    "abbr": "LKA",
    "population": "21413249",
    "code": "LK",
    "currency": "LKR",
    "timezones": "UTC+05:30"
  }
...

Вывожу их скриптом:
const outputHtml = (fits) => {
  if (fits.length > 0) {
    const html = fits
      .map(
        (fit) => `
          <div class="card">
            <div class="card-top">
              <div class="card-title">${fit.country}</div>
              <img src="./img/flags/${fit.code}.svg">
            </div>
            <div class="card-data">
              <div>Population: ${fit.population.replace(/\B(?=(\d{3})+(?!\d))/g, ' ')}</div>
              <div class="capitalCity">Capital: <span class="capitalName">${fit.capital}</span>
                <div id="capitalWeather"></div>
              </div>
              <div>Country Code: ${fit.phoneCode}</div>
              <div class="currency">Сurrency: <span>${fit.currency}</span>
                <div id="currencyData"></div>
              </div>
              <div>Time: ${fit.timezones}</div>
            </div>
          </div>
        `
      )
      .join('');
    document.getElementById('countryList').innerHTML = html;
  }
};

Вопрос: как посчитать текущее время в разных городах, зная своё время в UTC и разницу во времени города с UTC (включая разницу в минутах)?
В итоге сейчас это выглядит так, но каждый раз в уме пересчитывать время наверное не очень удобно:
5ec7a853e2566810381095.jpeg
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
поиграйся с возможными значениями timezones

function offsetToMs(s) {
  const [h, m] = s.replace(/utc/i, '').split(':').map(x => Number(x.replace(/\D/, '')))
  const ms = (h * 60 * 60 * 1000) + (m * 60 * 1000)
  return s.includes('-') ? -ms : ms
}

off = offsetToMs("UTC+05:30")
console.log( new Date(new Date().getTime() + off) )


UPD
ок это просто плюсует оффсет к времени браузера, но если "зная своё время в UTC", то можно исправить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы