Как мне преобразовать дату в ячейке html таблицы в формат iso 8601? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть тд:

<td>Jul 18 2019 12:00AM</td>

и мне нужно преобразовать его в формат ISO 8601 с помощью JavaScript. Ваниль или использование jQuery было бы хорошо, просто я продолжаю получать 'undefined', когда пытаюсь его проанализировать, но я думаю, что у него возникают проблемы из-за тегов html. Спасибо за любую помощь, спасибо.

 $(function () {
  $("#_ctl0_phMainContent_dgrdClasses3 tbody tr td:nth-child(7)").each(function (index, dateElem) {
    var $dateElem = $(dateElem);
    var formatted = moment($dateElem.text(), 'MMM DD YYYY h:mm:a').format('MMM DD YYYY h:mm:a').toISOString(); 
    $dateElem.text(formatted);   })
 })

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Вам необходимо добавить момент , чтобы проанализировать его в пользовательский формат строки даты и затем преобразовать его в формат ISO. Для получения более подробной информации о isoString

moment('Jul 18 2019 12:00AM','MMM DD YYYY h:mm:a').toISOString() 
0 голосов
/ 13 мая 2019

Я не собираюсь давать полное решение, так как не так сложно разобраться в логике самостоятельно.

1) Учитывая строку '18 июля 2019 г., 00:00', разделите ее пробелами.

const dateStringParts = 'Jul 18 2019 12:00AM'.split(' ');
//You should be getting an array of strings: ['Jul', '18', '2019', '12:00AM']

2) Преобразуйте время 12:00 в 24-часовой формат, используя ответ, предоставленный более здесь .

dateStringParts[3] = convertTime12to24(dateStringParts[3]);

3) Соедините их обратно в строку.

const newDateString = dateStringParts.join(' ');

4) Преобразовать в строку ISO.

const isoDate = new Date(newDateString).toISOString();
...