【问题标题】:reformat date coming form array javascript/React重新格式化来自数组 javascript/React 的日期
【发布时间】:2020-04-22 21:48:39
【问题描述】:

我想弄清楚如何重新格式化来自数组的日期...示例:

data: [{id: "1213" startDate: "2020-04-22T17:20:35.797Z" endDate: "2021-04-22T17:20:35.797Z"}]

<div>{data.startDate}</div>

当前日期显示为 2020-04-22T17:20:35.797Z。我的问题是如何重新格式化日期以显示为 04/22/2020?

【问题讨论】:

  • 如果您能接受其中一个答案或者如果它们不能解决您的问题,请发表评论并解释原因

标签: javascript arrays reactjs ecmascript-6


【解决方案1】:

首先将你的日期转换为 js 日期:

const date = new Date(data.startDate);

然后使用toLocaleDateString函数转换为本地日期字符串:

<div>{date.toLocaleDateString()}</div>

要批量转换您的数据数组,您可以这样做:

const newData = data.map(item => {
    const startDate = new Date(item.startDate);
    const endDate = new Date(item.endDate);
    return {id: item.id, startDate: startDate.toLocaleDateString(), endDate: endDate.toLocaleDateString()}
})

【讨论】:

  • 谢谢!我现在遇到的问题是我正在使用地图。例如: {this.state.data.map((datas, index) => (

    {datas.startDate}

    ))} 所以设置一个 const date = new Date(data.startDate);似乎引起了一个问题,因为地图功能现在依赖于数据而不是数据......希望这是有道理的。新手
  • 我已经编辑了我的答案并添加了代码来批量转换你的数据数组
【解决方案2】:

试试下面的代码。将 startDate 转换为 javascript Date 对象,然后使用普通格式来获得所需的输出。输出将是格式化日期数组

let arr = [{
  id: "1213",
  startDate: "2020-04-22T17:20:35.797Z",
  endDate: "2021-04-22T17:20:35.797Z"
}];

const ret = arr.map(item => {
 let startDate = new Date(item.startDate);
 let datestring =
    startDate.getDate() +
    "-" +
    (startDate.getMonth() + 1) +
    "-" +
    startDate.getFullYear();
 return datestring;
});

console.log(ret);

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2012-06-22
    • 2020-03-20
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多