Как преобразовать время в локальный часовой пояс пользователя в JavaScript - PullRequest
1 голос
/ 23 мая 2019

Я получаю этот "2019-05-05T10:30:00Z" тип времени из API.Но мне нужно конвертировать это так "10:30 AM (3:30 PM Your Time)".Я использую responseJs для моей клиентской стороны.Как я могу преобразовать время в текущий часовой пояс пользователя?

Ответы [ 4 ]

1 голос
/ 23 мая 2019

const dateToTime = date => date.toLocaleString('en-US', {
  hour: 'numeric',
  minute: 'numeric'
});

const dateString = "2019-05-05T10:30:00Z";
const userOffset = new Date().getTimezoneOffset()*60*1000;
const localDate = new Date(dateString);
const utcDate = new Date(localDate.getTime() + userOffset);

console.log(`${dateToTime(utcDate)} (${dateToTime(localDate)} Your Time)`);
0 голосов
/ 23 мая 2019

Ваш API отправляет сервер DateTime в ответ, вы можете просто использовать нижеуказанную функцию, которая может конвертировать в ваш местный часовой пояс.

function convertUTCDateToLocalDate(date) {
  var dateLocal = new Date(date);
  var newDate = new Date(dateLocal.getTime() - dateLocal.getTimezoneOffset()*60*1000);
  return newDate;
}
0 голосов
/ 23 мая 2019

взгляните на моменты.он имеет локализацию, и вы можете делать также пользовательские вещи.

https://momentjs.com

0 голосов
/ 23 мая 2019

Я предполагаю, что ваш API возвращает время UTC.Начиная с здесь , мы можем использовать UTC в конце стандартной даты разбора JavaScript.Когда str - строка из API:

var date = new Date(str.substring(0, 10)+" "+str.substring(11, 19)+" UTC")

Я уверен, что есть лучшие решения, но это вручную обрезает детали, которые вам не нужны.Вы можете получить доступ к этому Date объекту, чтобы извлечь то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...