3

我想获取罗马时区的当地时间。在这里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'

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

谢谢

4

2 回答 2

4

Postman 只有moment内置库,没有moment-timezone.

如果您正在做的事情不是moment文档的一部分,那么它将无法正常工作。

https://momentjs.com/docs/

作为获取数据的一种解决方法,您可以使用简单的 3rd 方 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);
});
于 2019-07-02T13:00:49.490 回答
2

实际上,您可以编写一个简单的函数来获取其他时区的当地时间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'));
于 2019-07-02T15:07:52.863 回答