如何显示使用react创建任务的时间

时间:2019-04-21 00:24:01

标签: reactjs ethereum solidity

我想显示使用以太坊在待办应用中创建任务的时间。

我得到task,其中包括contenttime,并在此代码中按状态设置任务。

constructor(props) {
    super(props)
    this.state = {
    tasks: [],
  }
}
・・・
for (var k = 1; k <= taskCount; k++) {
  const task = await todoList.methods.tasks(k).call()
  this.setState({
    tasks: [...this.state.tasks, task]
  })
}

然后,我使用map显示tasks数组和time

{ this.props.tasks.map((task, key) => {
  return(
    <div key={key}>
      <p>{task.content}</p>    
      <p>{task.time}</p>
    </div>
  )
})}

结果,我得到了这样的数字

1555650125
1555651118
1555651169
1555664902

因此,为了将数字转换为正常时间,我将{task.time}更改为{Date(checkin.checkintime)}。 但是,结果仅显示数字。

Sat Apr 20 2019 09:20:57 
Sat Apr 20 2019 09:20:57 
Sat Apr 20 2019 09:20:57 
Sat Apr 20 2019 09:20:57 

我写了这段代码是为了检查Data()是否正常工作,然后才能得到正确的答案。

for (var k = 1; k <= taskCount; k++) {
  const task = await todoList.methods.tasks(k).call()
  const tasktime = new Date(task.checkintime * 1000)
  console.log(tasktime)

  this.setState({
    tasks: [...this.state.tasks, task]
  })
}
Fri Apr 19 2019 14:02:05 
Fri Apr 19 2019 14:18:38 
Fri Apr 19 2019 14:19:29 
Fri Apr 19 2019 18:08:22 

您能建议我在地图上显示时间吗?

2 个答案:

答案 0 :(得分:1)

在本部分中,我假设task是刚刚创建的新任务。您可以使用时间字符串更新task.checkintime属性:

const task = await todoList.methods.tasks(k).call()
task.checkintime = new Date(task.checkintime * 1000).toDateString();

this.setState({
    tasks: [...this.state.tasks, task]
})

这意味着它将可以在您的地图中访问:

{ this.props.tasks.map((task, key) => {
return(
  <div key={key}>
    <p>{task.content}</p>    
    <p>{task.checkintime}</p>
  </div>
)

这将花费https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString并在task.checkintime上指定日期的字符串表示形式。

如果要进行其他格式化,请查看How to format a JavaScript date,以便可以格式化Date对象。

答案 1 :(得分:0)

task.timeUNIX time epoch系统定义的时间。由此您可以转换为任何格式。 不确定要显示什么,但是new Date(task.time)似乎是朝着正确方向迈出的一步。如果还不够,可以参考Date referenceMoment.js