我想获取罗马时区的当地时间。在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'
我要去哪里了?谁能指出我正确的方向。
谢谢
答案 0 :(得分:1)
Postman仅内置moment
库,而没有moment-timezone
。
如果您所做的工作不是moment
文档的一部分,那么它将无法正常工作。
作为获取数据的解决方法,您可以使用简单的第三方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'));