Какой формат поддерживает moment.js для сокращения зоны - PullRequest
0 голосов
/ 20 сентября 2019

Я не могу найти формат для преобразования даты в строку с сокращением, например:

moment().format('MM/DD/YYYY hh:mm A z') преобразуется в 09/17/2019 05:00 PM

Есть ли способ преобразовать его в09/17/2019 05:00 AM PST?(где PSt - TZ моего браузера)

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете использовать библиотеку moment-timezone (с данными часового пояса) и угадать часовой пояс пользователя, используя moment.tz.guess().

console.log(appendTimezone('09/17/2019 05:00 PM', {
  timeZone   : 'America/Los_Angeles',
  dateFormat : 'MM/DD/YYYY hh:mm A'
}));

function appendTimezone(timestamp, options) {
  options = options || {};
  let zone = options.timeZone || moment.tz.guess();
  let frmt = options.dateFormat || 'YYYY-MM-DDTHH:mm:ss.SSSZ';
  return moment(timestamp, frmt).format(frmt) + ' ' + moment().tz(zone).format('z');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.26/moment-timezone-with-data.min.js"></script>

Другой пример

const DATE_FORMAT = 'MM/DD/YYYY hh:mm A z';

let now = moment(),
    localTimeZone = moment.tz.guess();

let localTimeStamp = now.tz(localTimeZone);
console.log(localTimeStamp.format(DATE_FORMAT));

let pacificTimeStamp = now.tz('America/Los_Angeles');
console.log(pacificTimeStamp.format(DATE_FORMAT));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.26/moment-timezone-with-data.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...