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

时间:2019-07-02 12:13:09

标签: postman moment-timezone postman-testcase

我想获取罗马时区的当地时间。在postman_sandbox_api_reference

postman 文档中找不到有关如何使用矩型沙盒内置库的详细信息。

到目前为止我已经尝试过的

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 个答案:

答案 0 :(得分:1)

Postman仅内置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);
});

答案 1 :(得分:1)

实际上,您可以编写一个简单的函数来仅使用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'));