Javascript 使用momentjs和lodash获取精确格式

Javascript 使用momentjs和lodash获取精确格式,javascript,momentjs,lodash,Javascript,Momentjs,Lodash,我这里有一个时间段列表,例如: const times = [ { start: '2020-07-09T08:00:00.000+02:00', end: '2020-07-09T09:30:00.000+02:00' }, { start: '2020-07-09T08:30:00.000+02:00', end: '2020-07-09T10:00:00.000+02:00' }, ] 当我试着用momentjs和lodash按天对它们进行排序时,得到如下

我这里有一个时间段列表,例如:

const times = [
      { start: '2020-07-09T08:00:00.000+02:00', end: '2020-07-09T09:30:00.000+02:00' },
      { start: '2020-07-09T08:30:00.000+02:00', end: '2020-07-09T10:00:00.000+02:00' },
    ]
当我试着用momentjs和lodash按天对它们进行排序时,得到如下结果:

{
        {startTime: '08:00', endTime: '08:30'}
        {startTime: '08:30', endTime: '09:00'}
        {startTime: '08:00', endTime: '08:30'}
        {startTime: '08:30', endTime: '09:00'}
    }
现在我终于找到了这个解决方案:

const groupedAndFormatted = groupBy(times, date => moment(date.start_time).startOf('day').format('MMM Do YY')) 

但是这一个并没有给我正确的解决方案,有什么想法吗?

首先,您需要将它们按正确的顺序排序,我们将使用排序和unix时间戳来完成此操作

然后用dddd将其分组

const times = [
  { start_time: '2020-07-09T08:00:00.000+02:00', endTime: '2020-07-09T09:30:00.000+02:00' },
  { start_time: '2020-07-09T08:30:00.000+02:00', endTime: '2020-07-09T10:00:00.000+02:00' },
  { start_time: '2020-07-07T09:00:00.000+02:00', endTime: '2020-07-07T10:30:00.000+02:00' }
];

const sorted_times = times.sort((a,b) => moment(a.start_time).unix() - moment(b.start_time).unix())
const grouped = _.groupBy(sorted_times, date => moment(date.start_time).format("dddd"))

const formatted = _.mapValues(grouped, dates => {
  return dates.map(times => {
    return {
      start_time: moment(times.start_time).format("hh:mma"),
      endTime: moment(times.endTime).format("hh:mma"),
    }
  })
})


但是,如果您在不同的日期有多个星期二,这将不起作用。

谢谢Michael的解决方案,但它没有以以下格式提供日期:startTime:'08:00',而是提供iso日期:startTime:'2020-07-09T08:00:00.000+02:00'@errad,updated。另请注意,奇怪的是,你有蛇壳,然后是骆驼壳。对于
开始时间
结束时间