邮递员将 unix 时间(以微秒为单位)更改为日期时间

Postman change unix time in microseconds to datetime

提问人:catnap 提问时间:10/31/2023 最后编辑:catnap 更新时间:11/6/2023 访问量:33

问:

我有一个JSON响应,其中包括以微秒为单位的unix时间戳。我想要: 一个。在响应中添加一个字段,使其显示日期+时间;或 b.将字段本身更改为日期+时间。

以较容易者为准,但最好是 a。我需要的格式是 DD/MM/YYYY HH:MM:SS.sssssss

我正在查看以下线程,但我并不真正理解它们:

将 UTC Epoch 转换为本地日期

https://community.postman.com/t/convert-datetime-format-of-response-from-epoch-to-datetime/35320

https://learning.postman.com/docs/postman-flows/reference/working-with-date-and-time/

我试着查看 FQL 文档,但这也太深入了。

这是示例响应的一部分:

"SequenceNumber": 230901153510049870,
"Trade": {
        "LastPrice": 73.6,
        "LastSize": 53798,
        "Timestamp": 1693582510115510,

我希望它看起来像这样:

"SequenceNumber": 230901153510049870,
"Trade": {
        "LastPrice": 73.6,
        "LastSize": 53798,
        "Timestamp": 1693582510115510,
      **  "DateTime": 01/09/2023 15:35:10.115510,**

完整示例输出:

{
    "ErrorCode": 0,
    "Outcome": "Success",
    "Ticks": [
        {
            "SequenceNumber": 230814040000019593,
            "IsExtendedHour": false,
            "Ask": null,
            "Bid": null,
            "Trade": {
                "LastPrice": 74700.0,
                "LastSize": 100,
                "Timestamp": 1691985600000000,
                "OptionalFields": {
                    "TradeId": "58850000",
                    "size": "100",
                    "price": "74700",
                    "style": "-1",
                    "type": "0",
                    "minorcurrencytype": "-1",
                    "currency": "964",
                    "marketsession": "0"
                }
            }
        },
        {
            "SequenceNumber": 230814040000019591,
            "IsExtendedHour": false,
            "Ask": null,
            "Bid": null,
            "Trade": {
                "LastPrice": 74700.0,
                "LastSize": 200,
                "Timestamp": 1691985600000000,
                "OptionalFields": {
                    "TradeId": "58840000",
                    "size": "200",
                    "price": "74700",
                    "style": "-1",
                    "type": "0",
                    "minorcurrencytype": "-1",
                    "currency": "964",
                    "marketsession": "0"
                }
            }
        }
    ],
    "DepthOfBooks": []
}
Postman 数据转换 纪元

评论

0赞 mikee 11/1/2023
您无法在 Postman 中修改响应,因为这由 API 代码控制。(你控制着 API 吗?是否可以更改响应代码?在 Postman 中,可以分析响应,然后使用 moment 库更改该值的日期格式。然后,可以通过控制台记录更新的响应,也可以使用可视化工具(但无法更改实际响应)。
0赞 catnap 11/2/2023
所以我唯一能看到它的地方是在控制台日志中?(不,我无权访问 API。那么出于兴趣,FQL 是做什么的呢?听起来你可以操纵数据。
0赞 mikee 11/2/2023
我没有使用流查询语言,但这无法更改响应。输出对象看起来是相当可定制的,但这听起来像是敲碎螺母的大锤。我建议先尝试 Postman 中的可视化选项卡。如果您提供至少包含两条记录的示例响应,我可以使用 moment 来设置该日期的格式来共享可视化工具代码。
0赞 catnap 11/3/2023
谢谢。我已将其添加到主要问题中,因为它太长而无法作为评论发布。
0赞 mikee 11/6/2023
您能否阐明要在可视化效果中显示哪些字段?序列号和时间戳,或者您想要查看其他字段吗?您还能确认日期格式吗?我有“DD/MM/YYYY hh:mm:ss”,最后六个 sssss 是什么意思?

答:

0赞 mikee 11/6/2023 #1

在以下示例中,我将遍历已解析的响应,在可视化工具中使用时间戳之前更新时间戳。

我必须对时间戳进行切片,以使其按照您的要求显示。(我仍然不确定最后六位数字是什么)。

const response = pm.response.json();

var moment = require('moment');

response.Ticks.forEach(obj => {
    let utcMicroseconds = obj.Trade.Timestamp.toString();
    let utcSeconds = parseInt(utcMicroseconds.slice(0, 10)) * 1000;
    let remainder = parseInt(utcMicroseconds.slice(-6));
    let d = moment(utcSeconds).format("DD/MM/YYYY hh:mm:ss");
    obj.Trade.Timestamp = d + "." + remainder;
});

var template = `

    <style type="text/css">
        .tftable {font-size:14px;color:#333333;width:100%;border-width: 1px;border-color: #87ceeb;border-collapse: collapse;}
        .tftable th {font-size:18px;background-color:#87ceeb;border-width: 1px;padding: 8px;border-style: solid;border-color: #87ceeb;text-align:left;position:sticky;top:0;}
        .tftable tr {background-color:#ffffff;}
        .tftable td {font-size:14px;border-width: 1px;padding: 8px;border-style: solid;border-color: #87ceeb;}
        .tftable tr:hover {background-color:#e0ffff;}
    </style>
    
    <table class="tftable" border="1">

        <tr>
            <th>Sequence Number</th>
            <th>Timestamp</th>
        </tr>

        {{#each response}}
            <tr>
                <td>{{SequenceNumber}}</td>
                <td>{{Trade.Timestamp}}</td>
            </tr>
        {{/each}}

    </table>

`;

pm.visualizer.set(template, {
    response: response.Ticks
});

这将在可视化工具中生成以下内容。(请注意,时间显示的是我的时区,所以它有一个小时)。

enter image description here