Как разобрать момент в заданный c часовой пояс с момента. unix () - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть начальное значение для метки времени (созданной в часовом поясе Пользователя-1), которую я извлекаю из магазина Firebase. формат, в котором это происходит, это секунды в UT C от Unix Epoch.

Моя цель - взять начальное значение метки времени и преобразовать его в часовой пояс текущего пользователя. если я использую

moment.unix(initial_In_Seconds).format("H:mma"), я получаю правильное начальное время. Использование .unix() - единственный способ получить правильное начальное время. Теперь мне нужно преобразовать его в определенный c часовой пояс. скажем "Америка / Денвер" (начальный часовой пояс GMT -05: 00)

До сих пор мне не удавалось использовать moment.tz() ни в одном из моих объединений.

I ' я пробовал:

moment.tz(moment.unix(initial_In_Seconds).format("H:mma"), "America/Denver")

let unix = moment.unix(initial_In_Seconds).format("H:mma");
let parsed = moment.tz(unix, "America/Denver");

Как это можно проанализировать? Момент. js смущает меня

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Если смещение часового пояса указано с использованием репрезентативных местоположений IANA, таких как «Америка / Денвер», то вы, вероятно, можете использовать toLocaleString , если местоположения не слишком неясны (то есть не поддерживаются ECMAScript реализации, которые могут выполнять ваш код), например

function timeValueWithTimezone(unixOffset, loc) {
  let d = new Date(unixOffset * 1000);
  return d.toLocaleString(void 0, {
    hour12: true,
    hour: 'numeric',
    minute: '2-digit',
    timeZone: loc
  });
}

let timeValue = 1582090120;
let loc = 'America/Denver';

console.log('At your local time: ' +
  new Date(timeValue * 1000).toLocaleString(void 0, {
    hour12: true, 
    hour: 'numeric', 
    minute: '2-digit'
}));
console.log('Denver local time is: ' + timeValueWithTimezone(timeValue, loc));
0 голосов
/ 19 февраля 2020

дальнейшая игра дала лучшие результаты:

moment
 .tz(moment.unix(props.navigation.state.params.time.start.seconds),'America/Denver')
 .format('H:mma')

к сожалению, для часов, которые являются PM, это дает военное время ... и я заинтересован в 12-часовом формате ...

РЕДАКТИРОВАТЬ: изменения -> .format('h:mma') дает 12-часовой формат

...