【问题标题】:Postman Pre-req Function for Date Assign用于日期分配的 Postman Pre-req 功能
【发布时间】:2023-03-17 17:39:02
【问题描述】:

我正在尝试编写一个函数来格式化并在我的请求中的某些日期字段上分配过去或未来的日期。但是,我得到一个错误,说assignedDate 不是函数。

function changeDate(numberOfDays) {
var assignedDate = new Date().toISOString();
assignedDate.setDate(assignedDate.getDate() - numberOfDays);
assignedDate.substr(0, assignedDate.length-5);
return assignedDate; } 

然后我像一开始那样改变它;

function changeDate(numberOfDays) {
var assignedDate = new Date().toISOString();
var assignedDate.setDate(assignedDate.getDate() - numberOfDays);
var assignedDate.substr(0, assignedDate.length-5);
return assignedDate; } 

然后它开始显示“assignedDate is already defined”的警告。

我也是一种新手,请告诉我你的解决方案。

谢谢。

【问题讨论】:

  • assignedDate 是一个字符串,它没有 setDate 方法。

标签: javascript function date formatting postman


【解决方案1】:

您需要注意您正在创建的类型:

var assignedDate = new Date().toISOString();

new Date 创建一个 Date 对象,但是 toISOString 返回一个字符串,所以 assignedDate 是一个字符串。当你这样做时:

assignedDate.setDate(assignedDate.getDate() - numberOfDays);

你会得到一个错误,因为字符串没有 setDate 方法。只是不要toISOString

由于 assignedDate 现在是一个日期,您不能执行 assignedDate.substr。如果要格式化日期,请参阅Where can I find documentation on formatting a date in JavaScript?

以下使用 toISOString 来获取字符串,但请注意,这将是 UTC 日期,而不是本地日期,因此可能不是您想要的(因为日期在主机期间会有所不同时区偏移)。

function changeDate(numberOfDays) {
  // Start with a Date
  var assignedDate = new Date();
  // Adjust by the number of days
  assignedDate.setDate(assignedDate.getDate() - numberOfDays);
  // Get a formatted string (for UTC)
  assignedDate = assignedDate.toISOString();
  // Return the string
  return assignedDate.substr(0, assignedDate.length-5); 
}

console.log(changeDate(5));

【讨论】:

  • 我建议使用 Sergej Lopatkin 在他的解决方案中建议的 Moment。
【解决方案2】:

听说您正在尝试将天数减去/添加到相应的日期。

你可以直接像减法

 var d = new Date();
 d.setDate(d.getDate()-5);

参考: Subtract days from a date in JavaScript

【讨论】:

    【解决方案3】:

    你应该使用内部库moment

    导入是这样完成的:

    var moment = require('moment')
    

    moment 提供了一个非常易于使用和可读的 API。

    var fiveDaysAgo = moment().subtract(5, 'days');
    

    您可以在 Postman 的测试脚本中查找更多支持的库: Postman PM API Reference

    moment JS 的文档可以在这里找到: Moment JS Docs

    【讨论】:

    • 这实际上不是一个坏主意... Moment 非常强大,它们为您做了很多繁重的工作。它是一个受支持的库这一事实应该高度评价它的实用性。编辑:我不小心点击了向下投票箭头并且无法更改它。我知道这个解决方案脱离了 OP 的纯 JavaScript 方法,但是因为它受到 Postman 的支持,所以它应该是一个可以接受的答案/解决方案。
    • 感谢您的评论@EdMeacham。我没有看到使用 Moment JS 的问题,因为 Postman 文档中建议使用它。我们在我的团队中使用了普通的旧 JS Date 类,它很快就变得难以阅读和维护。
    • 当然!我在很多项目上使用 Moment——客户端和服务器端。如果您编辑您的回复,我可以修改我的投票。
    • 喜欢在 Postman 中使用 momentjs。这很棒!作为替代方案,应用程序还支持另一个名为Sugarjs 的基于时间的模块。它基本上做同样的事情,但知道这是一件有用的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2012-12-12
    相关资源
    最近更新 更多