首页 > 解决方案 > 格式化日期列表并添加到元素列表

问题描述

我有一个文章列表,其中每篇文章都显示了日期。但是,日期是字符串,格式为“YYYY-MM-DD”。例如,我需要收集所有字符串,提取月份和日期并将格式转换为“Oct 11”。

我有一个循环,它从文章的元素中收集所有字符串/“日期”,我有一个循环,它从字符串中创建一个日期对象,提取月份并将其与带有月份名称的硬编码数组匹配并获取并将其保存在变量中。

  const monthNames = ["jan", "feb", "mar", "apr", "maj", "jun",
  "jul", "aug", "sep", "okt", "nov", "dec"];

  let $month = "";
  let $day = "";
  let newDate = [];

  $('.jobs-grid__enddate').each(function() {
    newDate.push($(this).text());
});
  $(newDate).each( function(i, obj) {
      let $date = new Date(obj);
      $month = monthNames[$date.getMonth()];
      $day = $date.getDate();
    })
  $('.jobs-grid__enddate').text(` ${$day} ${$month}`);
}

我可以将我想要的值记录到控制台,但我不能将日期放回文章列表中。我最终打印到浏览器的只是最后处理的日期。我可以看到这不起作用,但我不知道如何使它起作用。任何指针?

标签: javascriptjquery

解决方案


您可以在第一个循环中直接进行日期转换并替换日期:

const monthNames = ["jan", "feb", "mar", "apr", "maj", "jun",
"jul", "aug", "sep", "okt", "nov", "dec"];

let $month = "";
let $day = "";

$('.jobs-grid__enddate').each(function() {
  let $date = new Date($(this).text());
  $month = monthNames[$date.getMonth()];
  $day = $date.getDate();
  $(this).text(` ${$day} ${$month}`);
});

推荐阅读