【问题标题】:Javascript Foreach for date format prints the same date [closed]日期格式的Javascript Foreach打印相同的日期[关闭]
【发布时间】: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 计算中使用 dmoment(d.from).format("YYYY-MM-DD") 也许?但我不确定response.data.from 如何返回2019-12-13
  • 这个问题是由无法再复制的问题或简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。这通常可以通过在发布之前确定并仔细检查重现问题所需的最短程序来避免。
  • response.data.fromundefined,这就是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


【解决方案1】:

您没有在forEach 循环中使用d - 使用d.tod.from 而不是response.data.toresponse.data.from

response.data.forEach((d)=>{
   d.from = moment(d.from).format("YYYY-MM-DD")
   d.to= moment(d.to).format("YYYY-MM-DD")
});

【讨论】:

  • 错字关闭可能吗?
  • 不,因为这是对如何正确修改数组的实际误解。
  • This question was caused by a problem that can no longer be reproduced 执行问题下的评论后
  • 现在可以正常工作了@JackBashford
  • 没问题@AppleCiderYummy,总是乐于提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2014-11-29
  • 1970-01-01
  • 2010-11-03
相关资源
最近更新 更多