【发布时间】:2019-02-28 07:55:34
【问题描述】:
大家好,
我正在尝试使用 moment.js 从我的 api 转换日期从我的 api,我有这种样本集合
在我的所有日期中,我得到的日期都与 2019-12-13 相同。
注意:问题不在当下,因为它在我的其他代码中运行良好。只是forEach,我不知道是什么导致了问题。
const response = {
data: [{
'from': '2019-12-31T00:00:00',
'to': '2020-12-31T00:00:00'
},
{
'from': '2021-12-31T00:00:00',
'to': '2022-12-31T00:00:00'
},
{
'from': '2023-12-31T00:00:00',
'to': '2024-12-31T00:00:00'
}
]
}
response.data.forEach((d) => {
d.from = moment(response.data.from).format("YYYY-MM-DD")
d.to = moment(response.data.to).format("YYYY-MM-DD")
})
console.log(response.data)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
【问题讨论】:
-
您没有在
moment计算中使用d。moment(d.from).format("YYYY-MM-DD")也许?但我不确定response.data.from如何返回2019-12-13 -
这个问题是由无法再复制的问题或简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。这通常可以通过在发布之前确定并仔细检查重现问题所需的最短程序来避免。
-
response.data.from是undefined,这就是moment()使用当前时间和日期的原因。我猜你想要response.data = response.data.map(d => ({ from: moment(d.from).format(...), ... })); -
在更改类似
moment(d.from).format("YYYY-MM-DD")的内容后,该格式在视图中不起作用 -
这会按照指示执行:
response.data.forEach((d) => { d.from = moment(d.from).format("YYYY-MM-DD"); d.to = moment(d.to).format("YYYY-MM-DD") })
标签: javascript arrays string ecmascript-6 momentjs