【问题标题】:How do I format {{$timestamp}} as MM/DD/YYYY in Postman?如何在 Postman 中将 {{$timestamp}} 格式化为 MM/DD/YYYY?
【发布时间】:2018-05-01 11:54:33
【问题描述】:

在 Postman 中,dynamic variable {{$timestamp}} 将当前的 Unix Time Stamp 插入到请求中。 (表示为自 1970 年 1 月 1 日以来的秒数)

"currentTime": "1510934784"

但是,我正在使用的 API 需要格式为 MM/DD/YYYY 的时间戳。

"currentDate": "11/17/2017"

如何将当前日期(格式为MM/DD/YYYY)插入到我对 Postman 的请求中?

【问题讨论】:

  • 您可以在预请求脚本选项卡中编写JS代码来这样做
  • @chakri 你能用答案更详细地解释一下吗?
  • 在请求前脚本选项卡postman.setEnvironmentVariable("$$timestamp",new Date()); 中添加以下代码,并在您的请求中使用{{$$timestamp}}
  • 这里是快速解释视频youtu.be/7qf9jA7YpwY

标签: date timestamp postman


【解决方案1】:

您可以使用 moment.js 和 Postman 来为您提供时间戳格式。

您可以将其添加到预请求脚本中:

const moment = require('moment');
pm.globals.set("today", moment().format("MM/DD/YYYY"));

然后在您需要的地方引用{{today}}

如果您将此添加到Collection Level Pre-request Script,它将针对Collection 中的每个请求运行。而不是需要将它单独添加到所有个请求中。

有关在 Postman 中使用 moment 的更多信息,我写了一篇简短的博文:https://dannydainton.com/2018/05/21/hold-on-wait-a-moment/

【讨论】:

  • 这不可能是真的。邮递员现在不支持加载外部库:github.com/postmanlabs/postman-app-support/issues/1180
  • 太棒了。这将帮助 los 使用前置和后置脚本。谢谢
  • 为防止名称冲突,您可能需要使用不同的名称,例如 {{today}}{{datestamp}}
  • 当然,这纯粹是你如何使用它的一个例子。变量名显然需要适合您自己的需求/上下文或您正在做的事情,只是将我的示例复制并粘贴到您的解决方案中......这绝不是一件好事。 :)
  • 非常有用的参考博文
【解决方案2】:

使用预请求脚本选项卡编写 javascript 以获取日期并将其保存到变量中:

const dateNow= new Date();
pm.environment.set('currentDate', dateNow.toISOString());

然后在请求体中使用如下:

"currentDate": "{{currentDate}}"

【讨论】:

  • 必须有一种方法来获取日期,而无需为每个请求修改预请求脚本。这太疯狂了。
  • 有全局变量,可以设置一次,其他地方读取。
  • 将请求放入文件夹或集合中,然后在文件夹或集合的前置脚本中设置一次此类变量
  • 请看我上面的答案。它向您展示了如何在集合上设置预脚本,因此您不必将其放入每个单独的请求中。
  • Postman 现在支持 {{$isoTimestamp}},输出:“2020-09-16T18:11:41.397Z”
【解决方案3】:

我的解决方案与 Payam 的类似,只是我使用的是

//older code
//postman.setGlobalVariable("currentDate", new Date().toLocaleDateString());
pm.globals.set("currentDate", new Date().toLocaleDateString());

如果您点击文件夹上的“3 个点”并点击“编辑”

然后为所有调用设置 Pre-Request Scripts,这样全局变量总是可用的。

【讨论】:

  • 你也可以使用 - pm.globals.set("currentDate", new Date().toLocaleDateString()); 这不会给你一个格式为“DD/MM/YYY”而不是“MM/DD/YYYY”的时间戳吗?
  • 有用的注意最后一张图片[当前]包括,“这个脚本将在这个集合中的每个请求之前执行”也就是说,这个答案是对 Diceyus' improvement to Payam's answer 的一个很好的描述,它建议一次为许多测试设置一个带有代码的 var。
【解决方案4】:

JavaScript 中的任何未来日期(邮递员测试使用 JavaScript)都可以检索为:

var dateNow = new Date();  
var twoWeeksFutureDate = new Date(dateNow.setDate(dateNow.getDate() + 14)).toISOString();

postman.setEnvironmentVariable("future-date", twoWeeksFutureDate);

【讨论】:

    【解决方案5】:

    在 PostMan 中,我们有 -> 预请求脚本。粘贴下面的 sn-p。

    const dateNow = new Date();
    postman.setGlobalVariable("todayDate", dateNow.toLocaleDateString());
    

    现在我们可以使用了。

    {
    "firstName": "SANKAR",
    "lastName": "B",
    "email": "SANKARB@GMAIL.COM",
    "creationDate": "{{todayDate}}"
    }
    

    如果您使用的是 JPA 实体类,请使用以下 sn-p

        @JsonFormat(pattern="MM/dd/yyyy")
        @Column(name = "creation_date")
        private Date creationDate;
    

    enter image description here enter image description here

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2021-08-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2013-03-18
      • 2018-04-02
      • 2016-12-13
      相关资源
      最近更新 更多