如何在 Postman 中获取不同时区的本地时间?

How to get local time of different timezone in Postman?

我想获取罗马时区的当地时间。在此处的 postman 文档 postman_sandbox_api_reference

中未找到有关如何使用 moment 沙箱内置库的任何详细信息

到目前为止我尝试了什么

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'

我哪里错了?谁能指出我正确的方向。

谢谢

Postman 只有 moment 库 built-in 而没有 moment-timezone

如果您正在做的不是 moment 文档的一部分,它就不会起作用。

https://momentjs.com/docs/

作为获取数据的解决方法,您可以使用简单的第 3 方 API。

向此端点发出请求将为您提供一些您可以使用的时区数据。

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

这可以添加到 pre-request script 中的 pm.sendRequest() 以获取您需要的数据并在另一个请求中使用它。

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

实际上,您可以编写一个简单的函数来获取其他时区的本地时间,只需要 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'));