Javascript MomentJS解析大数据字符串

Javascript MomentJS解析大数据字符串,javascript,momentjs,Javascript,Momentjs,所以,我有这样的数据 开始时间:2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间) 还有这个 结束时间:2018年12月31日星期一02:15:00 GMT+0200(东欧标准时间) 数据始终采用这种格式。我需要解析它,这样我就可以在startTime和endTime(在本例中为1:15-2:15)的时间内,拥有一个每天都在startTime和endTime之间的所有日期的对象数组 有什么想法吗?我得到的答案是 function toDays(startDateStr

所以,我有这样的数据
开始时间:2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间)
还有这个
结束时间:2018年12月31日星期一02:15:00 GMT+0200(东欧标准时间)
数据始终采用这种格式。我需要解析它,这样我就可以在startTime和endTime(在本例中为1:15-2:15)的时间内,拥有一个每天都在startTime和endTime之间的所有日期的对象数组 有什么想法吗?我得到的答案是

function toDays(startDateString, endDateString) {

  const startDate = moment(startDateString, 'dddd MMM DD YYYY');
  const endDate = moment(endDateString, 'dddd MMM DD YYYY');

  const dates = [];

  while(startDate.isSameOrBefore(endDate, 'day')) {
    let currentDay = startDate.format('dddd');
    dates[currentDay] = [];
    dates[currentDay].push({start:'9:00', end:'18:00'});
    startDate.add(1, 'days');
  }

  return dates;
}

const result = toDays('Mon Dec 24 2018', 'Fri Dec 28 2018');
console.log(result);

但是我不能真正使用它,我不确定如何修复它,因为我以前从未使用过它。

将日期名称添加到您创建的新对象中,作为属性,如
day
,并将整个对象推送到数组中

改变

dates[currentDay] = [];
dates[currentDay].push({start:'9:00', end:'18:00'});


将日期名称添加到创建为属性(如
day
)的新对象中,并将整个对象推送到数组中

改变

dates[currentDay] = [];
dates[currentDay].push({start:'9:00', end:'18:00'});


如果我正确理解了这个问题,您可能很难理解如何解析格式
开始时间:2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间)
? 如果确实如此,那么我认为以下代码可能会有所帮助:

<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.js'></script>
<script>
function toDays(startDateString, endDateString) {
  const formatString = 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ [(Eastern European Standard Time)]';
  const startDate = moment(startDateString, formatString).utcOffset("+02:00");
  const endDate = moment(endDateString, formatString).utcOffset("+02:00");
  const start = startDate.format('H:mm');
  const end = endDate.format('H:mm');

  const dates = [];

  while(startDate.isSameOrBefore(endDate, 'day')) {
    let currentDay = startDate.format('dddd');
    dates.push({day: currentDay, start: start, end: end});
    startDate.add(1, 'days');
  }

  return dates;
}

const result = toDays('Fri Dec 28 2018 01:15:00 GMT+0200 (Eastern European Standard Time)', 'Mon Dec 31 2018 02:15:00 GMT+0200 (Eastern European Standard Time)');
console.log(result);
</script>

函数toDays(startDateString、endDateString){
const formatString='ddd-MMM-DD-YYYY-HH:mm:ss[GMT]ZZ[(东欧标准时间)];
常量startDate=力矩(startDateString,formatString).utcOffset(“+02:00”);
const endDate=moment(endDateString,formatString).utcOffset(“+02:00”);
const start=startDate.format('H:mm');
const end=endDate.format('H:mm');
常数日期=[];
while(startDate.issameorfore(endDate,'day')){
让currentDay=startDate.format('dddddd');
推送({day:currentDay,start:start,end:end});
添加(1,‘天’);
}
返回日期;
}
const result=今天(“2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间)”,“2018年12月31日星期一02:15:00 GMT+0200(东欧标准时间)”;
控制台日志(结果);

要点是行
const formatString='ddd-MMM-DD-YYYY-HH:mm:ss[GMT]ZZ[(东欧标准时间)]
正确解析您提供的日期格式。

如果我正确理解了问题,您可能无法理解如何解析格式
开始时间:2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间)
? 如果确实如此,那么我认为以下代码可能会有所帮助:

<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.js'></script>
<script>
function toDays(startDateString, endDateString) {
  const formatString = 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ [(Eastern European Standard Time)]';
  const startDate = moment(startDateString, formatString).utcOffset("+02:00");
  const endDate = moment(endDateString, formatString).utcOffset("+02:00");
  const start = startDate.format('H:mm');
  const end = endDate.format('H:mm');

  const dates = [];

  while(startDate.isSameOrBefore(endDate, 'day')) {
    let currentDay = startDate.format('dddd');
    dates.push({day: currentDay, start: start, end: end});
    startDate.add(1, 'days');
  }

  return dates;
}

const result = toDays('Fri Dec 28 2018 01:15:00 GMT+0200 (Eastern European Standard Time)', 'Mon Dec 31 2018 02:15:00 GMT+0200 (Eastern European Standard Time)');
console.log(result);
</script>

函数toDays(startDateString、endDateString){
const formatString='ddd-MMM-DD-YYYY-HH:mm:ss[GMT]ZZ[(东欧标准时间)];
常量startDate=力矩(startDateString,formatString).utcOffset(“+02:00”);
const endDate=moment(endDateString,formatString).utcOffset(“+02:00”);
const start=startDate.format('H:mm');
const end=endDate.format('H:mm');
常数日期=[];
while(startDate.issameorfore(endDate,'day')){
让currentDay=startDate.format('dddddd');
推送({day:currentDay,start:start,end:end});
添加(1,‘天’);
}
返回日期;
}
const result=今天(“2018年12月28日星期五01:15:00 GMT+0200(东欧标准时间)”,“2018年12月31日星期一02:15:00 GMT+0200(东欧标准时间)”;
控制台日志(结果);

要点是行
const formatString='ddd-MMM-DD-YYYY-HH:mm:ss[GMT]ZZ[(东欧标准时间)]正确解析您提供的日期格式。

请显示预期结果的示例。例外结果为[Friday{startTime:9:00,endTime:18:00},…一直到周一{startTime:9:00,endTime:18:00}];好的,但这不是一个有效的结构。您可能需要更像
[{day:'Friday',start:'9:00',end:'18:00},{day:Saturday',start:'9:00',end:'18:00}]
是的,大致如下:)请显示预期结果的示例。例外结果是[Friday{startTime:9:00,endTime:18:00},…一直到周一{startTime:9:00,endTime:18:00};好的,但这不是一个有效的结构。您可能需要更像
[{day:'Friday',start:'9:00',end:'18:00},{day:Saturday',start:'9:00',end:'18:00'}]
是的,大致如下:)