Как узнать местное время другого часового пояса в Почтальоне? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу узнать местное время в часовом поясе Рима. Не нашел подробностей о том, как использовать встроенную библиотеку моментальной песочницы в почтальоне документации здесь postman_sandbox_api_reference

что я пробовал до сих пор

var moment = require('moment');
console.log(moment().tz(environment.TimeZone).format());

выдает ошибку - TypeError | moment(...).tz is not a function

еще одна попытка -

var moment = require('moment-timezone');
console.log(moment().tz(environment.TimeZone).format());

ошибка, которую он выдает - Error | Cannot find module 'moment-timezone'

Где я иду не так? Кто-нибудь может направить меня в правильном направлении.

Спасибо

Ответы [ 2 ]

1 голос
/ 02 июля 2019

На самом деле, вы можете написать простую функцию для получения местного времени в других часовых поясах только с помощью moment:

const moment = require('moment');

const TimeZoneUTCOffsetMapping = {
  'America/Chicago': -6,
  'Europe/Rome': 2,
  'Asia/Shanghai': 8,
  ...
};

const LocalUTCOffset = 8;

function getMomentDisplayInTimeZone(momentObj, timeZone) {
  let timeZoneUTCOffset = TimeZoneUTCOffsetMapping[timeZone];
  if (timeZoneUTCOffset === undefined) {
    throw new Error('No time zone matched');
  }

  return momentObj.add(timeZoneUTCOffset - LocalUTCOffset, 'hour').format('YYYY-MM-DDTkk:mm:ss');
}

console.log(getMomentDisplayInTimeZone(moment(), 'Europe/Rome'));
1 голос
/ 02 июля 2019

Почтальон имеет только встроенную библиотеку moment, но не moment-timezone.

Если то, что вы делаете, не является частью moment документов, это не сработает.

https://momentjs.com/docs/

В качестве обходного пути для получения данных вы можете использовать простой сторонний API.

Отправив запрос этой конечной точке, вы получите данные о часовом поясе, которые вы можете использовать.

http://worldtimeapi.org/api/timezone/Europe/Rome

Это можно добавить к pm.sendRequest() в pre-request script, чтобы получить необходимые данные и использовать их в другом запросе.

pm.sendRequest("http://worldtimeapi.org/api/timezone/Europe/Rome", function (err, res) {
    pm.globals.set("localTimeRome", res.json().datetime);
});
...