Current offset of time

by Евгений

HTML

<div class="result"></div>

SCSS

.result,
.resume,
.debug {
  border: 1px solid grey;
  background-color: #dbdbdb;
  padding: 0 4px 4px 4px;
  line-height: 1.5rem;
  &::before {
    display: block;
    padding: 4px;
    margin: 0 -4px;
    background-color: grey;
  }
  &:empty {
    display: none;
  }
}

.result::before {
  content: 'result:';
}
.resume::before {
  content: 'resume:';
}
.debug::before {
  content: 'debug:';
}

JavaScript

const getOffset = (timeZoneCode, date) => {
    const now = new Date(date);
    const utcString = now.toLocaleString("en-US", {timeZone: 'UTC'});
    let targetString;
    try {
        targetString = now.toLocaleString("en-US", {timeZone: timeZoneCode});
    } catch(e) {
        targetString = now.toLocaleString("en-US", {timeZone: 'UTC'});
    }
    return ((new Date(targetString)).getTime() - (new Date(utcString)).getTime());
}

const run = () => {
	const date = '2021-11-22T07:22:37.1666667Z';
	const offset = getOffset('Europe/Kiev', date) / 60000;
  document.querySelector('.result').textContent = `Offset of time is ${offset} minutes`;
}
run();