Как показать время, когда задача была создана с помощью реакции - PullRequest
0 голосов
/ 21 апреля 2019

Я хочу показать время создания задачи в моем приложении todo с использованием ethereum.

Я получаю task, которые включают content и time, и задаю задачу по состоянию в этом коде.

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 ]

1 голос
/ 21 апреля 2019

В этом разделе, я предполагаю, 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.

Если вы хотите сделать другое форматирование, взгляните на Как отформатировать дату JavaScript , чтобы вы могли отформатировать свой объект Date.

0 голосов
/ 21 апреля 2019

task.time - это время, определенное системой эпоха UNIX .Из этого вы можете конвертировать в любой формат.Не уверен, что вы хотите показать, но new Date(task.time) кажется шагом в правильном направлении.Вы можете обратиться к Ссылке на дату или Moment.js , если этого недостаточно.

...