Làm việc với API đôi khi chúng ta cần phải giả lập hoặc dùng những data dạng date_time – thời gian. Mà thời gian thì có rất nhiều kiểu: hiện tại, quá khứ, tương lai; chưa kể là với rất nhiều định dạng khác nhau. Ví dụ:
09/04/1986 | September 4, 1986 | Thursday, September 4, 1986 8:30 PM
Để làm việc với date_time một cách linh hoạt nhất ta cần phải đưa nó về dạng object thay vì text. Với mỗi ngôn ngữ lập trình, date_time đều được cung cấp dưới dạng các library (hoặc package). Trong javascript, đó là Moment.js và Postman cũng sử dụng thư viện này luôn. Refer: https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries
I. Cách sử dụng
Bạn có thể viết vào phần pre-request script:
- Thời gian hiện tại:
const moment = require('moment');
//DD/MM/YYYY - 02/02/2023
console.log(moment().format("DD/MM/YYYY"));
//YYYY/MM/DD - 2023/02/02
console.log(moment().format("YYYY/MM/DD"));
//DD/MM/YYYY HH:mm - 02/02/2023 15:29
console.log(moment().format("DD/MM/YYYY HH:mm"));
//dddd, MMMM Do YYYY, h:mm:ss a - Thursday, February 2nd 2023, 3:29:42 pm
console.log(moment().format("dddd, MMMM Do YYYY, h:mm:ss a"));
- Thời gian trong quá khứ:
const moment = require("moment");
now = moment();
console.log(now.format("DD/MM/YYYY HH:mm:ss"));
yesterday = now.subtract(1, "days");
console.log(yesterday.format("DD/MM/YYYY"));
last_1_hour = now.subtract(1, "hours");
console.log(last_1_hour.format("DD/MM/YYYY HH:mm:ss"));
last_2_minutes = now.subtract(2, "minutes");
console.log(last_2_minutes.format("DD/MM/YYYY HH:mm:ss"));
duration_1year_1month_1day_1hour_1minute = moment.duration({
seconds: 0,
minutes: 1,
hours: 1,
days: 1,
weeks: 0,
months: "1",
years: "1"
});
time_in_the_past = now.subtract(duration_1year_1month_1day_1hour_1minute);
console.log(time_in_the_past.format("DD/MM/YYYY HH:mm:ss"));
- Thời gian ở tương lai
const moment = require("moment");
now = moment();
console.log(now.format("DD/MM/YYYY HH:mm:ss"));
tomorrow = now.add(1, "days");
console.log(tomorrow.format("DD/MM/YYYY"));
next_1day_1hour = now.add(1, "d").add(1, "h");
console.log(next_1day_1hour.format("DD/MM/YYYY HH:mm:ss"));
duration_1year_1month = moment.duration({
months: "1",
years: "1"
});
time_in_the_future = now.add(duration_1year_1month);
console.log(time_in_the_future.format("DD/MM/YYYY HH:mm:ss"));
II. Cách parse thời gian từ String
Mình có scenario sau:
- Save thời gian hiện tại vào biến
- Sau đó lại lấy biến đó ra + thêm 1 khoảng thời gian nữa (phút, giờ)
//Step 1
const formatter = 'YYYY-MM-DDTHH:mm:ss+00:00';
const moment = require('moment');
pm.environment.set('currenttime',moment().format(formatter));
//Step 2: thêm 10 phút
const currenttime = pm.environment.get('currenttime');
console.log(currenttime); //2023-02-02T15:40:01+00:00
const parse = moment(currenttime, formatter);
parse.add(10, 'm');
console.log(parse.format(formatter)); //2023-02-02T15:50:01+00:00
Nguồn:
https://giangtester.com/api-testing-voi-postman-phan-17-lam-viec-voi-thoi-gian/