第四篇 Postman之Pre-request Script(前置处理器:JS之 YYYY-MM-DD HH:MM:SS)

本文介绍如何在Pre-requestScript中使用JavaScript获取并格式化当前时间,以便在请求前设置最早和最晚的预约时间变量,适用于需要精确时间设置的场景。

本篇来讲讲Pre-request Script 前置处理器,定义在发送request之前需要运行的一些脚本,应用场景主要是设置全局变量和环境变量。

 本例子也是项目中遇到的,需要修改与客户的预约时间,但是预约时间的格式为:YYYY-MM-DD HH:MM:SS

需要通过在Pre-request Script里预先获取当前时间并格式化,具体如下:

var d = new Date();
// 将月份格式化为2位
var month = (d.getMonth()+1).toString();
if (month.length==1){
    month = "0"+month;
}

// 给当前月份+2,用于最晚预约时间,最晚预约时间必须晚于最早预约时间,所以将
// 最晚预约时间的月份+2,即比当前月份晚一个月
var monthLatest = (d.getMonth()+2).toString();
if (monthLatest.length==1){
    monthLatest = "0"+month
}
console.log(monthLatest)
//将日期格式化为2位
var timeDate = d.getDate().toString();
if(timeDate.length == 1){
    timeDate = "0" + timeDate;
}
//将小时格式化为2位
// 因为提交预约的时间必须早于最早预约时间,所以将小时加1
var timeHour = (d.getHours()+1).toString();
if(timeHour.length == 1){
    timeHour = "0" + timeHour;
}
//将分钟组格式化为2位
var timeMin = d.getMinutes().toString();
if(timeMin.length == 1){
    timeMin = "0" + timeMin;
}

//将秒格式化为2位
var timeSec = d.getSeconds().toString();
if(timeSec.length == 1){
    timeSec = "0" + timeSec;
}
//将毫秒格式化为3位
// var timeMilliSec = d.getMilliseconds().toString();
// if(timeMilliSec.length == 1){
//     timeMilliSec = "00" + timeMilliSec;
// }
// else if(timeMilliSec.length == 2){
//     timeMilliSec = "0" + timeMilliSec;
// }

//整理时间格式
var timesDate = d.getFullYear() +'-'+ month +'-' + timeDate + ' ' +timeHour + ':' + timeMin +':'+ timeSec ;

var timesDateLatest = d.getFullYear() +'-'+ monthLatest +'-' + timeDate + ' ' +timeHour + ':' + timeMin +':'+ timeSec ;

postman.setEnvironmentVariable("appointTimeEarliest", timesDate );
postman.setEnvironmentVariable("appointTimeLatest",timesDateLatest);

 

转载于:https://www.cnblogs.com/victorm/p/9250775.html

<think>好的,用户想在Postman里获取UTC时间,并且格式化成YYYY-MM-DD HH:MM:SS。我需要一步步想清楚怎么实现这个需求。 首先,Postman本身没有直接显示当前时间的界面功能,所以可能需要用脚本来生成。用户可能知道要用Pre-request Script或者Tests里的脚本,但不确定具体步骤。 然后,考虑到用户需要UTC时间,应该用JavaScript的Date对象来处理。Date对象有toISOString()方法,可以输出ISO格式的字符串,比如"2023-10-05T14:30:45.000Z"。不过这个格式中间有个T,还有毫秒和Z,需要处理掉。 接下来,用户要的格式是YYYY-MM-DD HH:MM:SS,所以得把T替换成空格,去掉毫秒部分。可能需要用字符串分割或者正则表达式替换。比如,把字符串按T分成两部分,取日期部分和时间部分的前8个字符(去掉秒后面的小数点部分)。 另外,用户可能需要把这个时间保存为变量,以便在请求中使用。所以脚本里应该用pm.environment.set或者pm.globals.set来存储变量。比如,生成时间字符串后,设置为环境变量currentUTCTime。 然后,用户可能在请求体或者URL参数里引用这个变量,比如{{currentUTCTime}}。需要提醒用户正确使用变量语法,并检查是否已经设置成功。 有没有可能用户会遇到时区问题?比如虽然用了toISOString,但可能在某些情况下需要考虑时区转换,不过UTC时间应该直接用这个方法没问题。可能需要确认生成的确实是UTC时间,而不是本地时间转换后的结果。 另外,测试脚本是否在发送请求前执行,Pre-request Script是正确的选择,确保变量在请求发送前已经生成。如果放在Tests里,可能是在请求之后才执行,导致变量不可用。 是否需要处理时间格式的其他情况?比如月份、日期、小时等不足两位时补零。不过toISOString()应该已经自动补零了,所以可能不需要额外处理。例如,月份10月会是10,而9月是09。 最后,可能需要给用户一个完整的示例脚本,展示如何生成时间并设置为变量,以及如何在请求中使用。同时提醒用户检查脚本是否正确执行,可以通过查看Postman的控制台输出或者环境变量来验证。</think>在Postman中获取UTC时间并格式化为`YYYY-MM-DD HH:MM:SS`,可通过以下步骤实现: --- ### **步骤 1:使用 Pre-request Script 脚本生成时间** 在请求的 **Pre-request Script** 标签页中,添加以下JavaScript代码: ```javascript // 获取当前UTC时间 const utcDate = new Date().toISOString(); // 格式化为 YYYY-MM-DD HH:MM:SS const formattedDate = utcDate.replace('T', ' ').split('.')[0]; // 将结果保存为环境变量 pm.environment.set("currentUTCTime", formattedDate); ``` --- ### **步骤 2:在请求中使用变量** 在请求参数、请求体或URL中,通过`{{currentUTCTime}}`引用该变量: ``` GET https://example.com/api?time={{currentUTCTime}} ``` --- ### **验证结果** 1. **发送请求**后,在Postman的 **Console**(底部菜单栏)中查看脚本执行日志。 2. 检查环境变量是否成功生成:点击右上角 **Environment Quick Look** 图标,找到`currentUTCTime`的值。 --- ### **技术说明** - `toISOString()` 会生成类似 `2023-10-05T14:30:45.000Z` 的UTC时间。 - `replace('T', ' ')` 将 `T` 替换为空格。 - `split('.')[0]` 移除毫秒部分。 --- ### **注意事项** - 如果未使用环境变量,可改用全局变量:`pm.globals.set("currentUTCTime", formattedDate)` - 时间基于Postman所在系统的本地时钟,需确保系统时间准确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值