Преобразуйте местное время в другой часовой пояс с помощью этого JavaScript - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно увеличивать текущую дату по московскому времени на 1 день каждый раз, когда часы 15:00 и больше. Я делал по местному времени, но по московскому времени не могу (UT C + 3)

  function date() {
  const today = new Date();
  const t = today.getHours();
  const dtfRU = new Intl.DateTimeFormat('ru', {
    month: 'long', day: '2-digit',
  });

  if (t >= 15) {
    today.setDate(today.getDate() + 1);
    document.querySelector('.date').innerHTML = dtfRU.format(today);
  } else document.querySelector('.date').innerHTML = dtfRU.format(today);

}

document.addEventListener("DOMContentLoaded", date);

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Я нашел решение здесь: введите здесь описание ссылки Мне нужно было сделать что-то вроде этого:

function calcTime() {
  const now = new Date();
  const utc = now.getTime() + (now.getTimezoneOffset() * 60000);

  const d = new Date(utc + (3600000 * 3));
  const h = d.getHours();
  const dtfRU = new Intl.DateTimeFormat('ru', {
    month: 'long', day: '2-digit',
  });

  if (h >= 15) {
    const newd = new Date(utc + (3600000 * 3 * 9));
    document.querySelector('.date').innerHTML = dtfRU.format(newd);
  } else document.querySelector('.date').innerHTML = dtfRU.format(d);
}
document.addEventListener("DOMContentLoaded", calcTime);
0 голосов
/ 18 июня 2020

Вы можете узнать местный час в Москве следующим образом:

// Get a DateTimeFormat object for the hour in Moscow in 24-hour format
const dtf = Intl.DateTimeFormat('en', {
  timeZone: 'Europe/Moscow',
  hour: 'numeric',
  hour12: false
});

// The above will create a format that has only the hour, so you can just use it.
const hour = +dtf.format();

console.log("hour:", hour);

В качестве альтернативы, если вы решите, что вам нужно больше, чем просто час, используйте formatToParts. Например:

const dtf = Intl.DateTimeFormat('en', {
  timeZone: 'Europe/Moscow',
  hour: 'numeric',
  hour12: false,
  minute: 'numeric'
});

const parts = dtf.formatToParts();
const hour = +parts.find(x => x.type === 'hour').value;
const minute = +parts.find(x => x.type === 'minute').value;

console.log("hour:", hour);
console.log("minute:", minute);

Затем вы можете использовать это в остальной части кода, однако вы будете sh.

...