Форматировать дату создания в Reactjs - PullRequest
1 голос
/ 31 октября 2019

У меня есть следующее

{journal.createdAt}

2019-10-30T14:01:59.689Z

, которое выводит дату created_at.

Как мне поступитьо форматировании этого?

Я сделал это снимок, но я думаю, что у меня есть значение в неправильном месте

{new Intl.DateTimeFormat('en-GB', {
  year: 'numeric',
  month: 'long',
  day: '2-digit'
}).format(journal.createdAt)}

Я получаю

RangeError: date value is not finite in DateTimeFormat.format()

1 Ответ

1 голос
/ 31 октября 2019

Согласно ES2015, Intl.DateTimeFormat.format(date) ожидает, что параметр date будет числом, представляющим количество миллисекунд с начала эпохи. Однако в примерах документов MDN и моего собственного тестирования на последних Firefox, Chrome и Safari эти браузеры также принимают объект Date.

Поскольку journal.createdAt предположительно является строкой в ​​формате ISO8601, вы можете использовать Date.parse(journal.createdAt) или new Date(journal.createdAt) и передать результирующее значение в Intl.DateTimeFormat.format, хотя первое являетсяспособ сделать это согласно спецификации.

Рабочий пример .

class App extends React.Component {
  formatter = new Intl.DateTimeFormat("en-GB", {
          year: "numeric",
          month: "long",
          day: "2-digit"
        });

  render() {
    const dateString = "2019-10-30T14:01:59.689Z";

    return (
      <div>
        Using <code>Date.parse</code>: {this.formatter.format(Date.parse(dateString))}
        <br />
        <em>OR</em>
        <br />
        Using <code>new Date</code>: {this.formatter.format(new Date(dateString))}
      </div>
    );
  }
}
...