обернуть формат Intl.DateTimeFormat - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь отформатировать строку даты ISO с помощью Intl.DateTimeFormat .Поскольку он не принимает строки, я попытался изменить функцию format экземпляра.

Возвращает ошибку:

RangeError: Неверное значение времени

var str = '2018-05-30T12:20:51.526Z'
var date = new Date(str)

var dtf = new Intl.DateTimeFormat('en');
var format = dtf.format;
dtf.format = function(str) {
  var date = new Date(str);
  return format(date);
}

console.log(new Intl.DateTimeFormat('en').format(date)) // 5/30/2018
console.log(dtf.format(str))

Вот JsBin с кодом.

1 Ответ

0 голосов
/ 31 мая 2018

Я думаю, что вы могли бы лучше всего использовать 'moment.js' для его форматирования.

var str = '2018-05-30T12:20:51.526Z'
var date = new Date(str)
  
console.log(new Intl.DateTimeFormat('en').format(date))
console.log(moment(str).format("MM/DD/YYYY"));
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
  <title>JS Bin</title>
</head>
<body>

</body>
</html>

Импортируйте скрипт 'moment' в ваш HTML-файл, и вы сможете преобразовать дату ISO в любой формат.

...