gpt4 book ai didi

javascript - 获取从字符串中检索到的两个日期之间的所有日期并制作一个字符串

转载 作者:行者123 更新时间:2023-11-30 12:56:47 24 4
gpt4 key购买 nike

我有一个类似下面的字符串:

#CI[20131229]CO[20131231]PV1,#CI[20130918]CO[20130919]PV3,#CI[20131009]CO[20131011]PV3,#CI[20131226]CO[20140103]PV4,#CI[20131226]CO[20140103]PV3

....列表以相同的格式继续。格式为:

,# = entry seperator
CI[YYYYMMDD] = Check In Date
CO[YYYYMMDD] = Check Out Date
PVx = Room Number

我想获取除 checkin checkout 日期之外的所有 checkin 和 checkout 日期,并像这样放入字符串(如果是上面的字符串):

#20131230PV1,#20131010PV3,#20131227PV3,#20131228PV3,#20131229PV3,#20131230PV3,#20131231PV3,#20140101PV3,#20140102PV3

我需要分别检索入住日期和退房日期我成功地做到了这一点:

bookcaldatesci.innerHTML = bookcaldates.innerHTML.replace(/CO[^\]]+\]/ig, "");
bookcaldatesci.innerHTML = bookcaldatesci.innerHTML.replace(/CI\[/ig, "");
bookcaldatesci.innerHTML = bookcaldatesci.innerHTML.replace(/\]/ig, "");
bookcaldatesco.innerHTML = bookcaldates.innerHTML.replace(/CI[^\]]+\]/g, "");
bookcaldatesco.innerHTML = bookcaldatesco.innerHTML.replace(/CO\[/ig, "");
bookcaldatesco.innerHTML = bookcaldatesco.innerHTML.replace(/\]/ig, "");
jQuery.noConflict();
$(bookcaldatesci.innerHTML).css({'background-image':'url("img/booked.jpg")','background-repeat':'no-repeat','background-position-y':'100%','background-size':'100% 50%'});
$(bookcaldatesco.innerHTML).css({'background-image':'url("img/booked.jpg")','background-repeat':'no-repeat','background-size':'100% 50%'});

但是要在日期范围之间添加日期我有点迷路了..

(我得到了答案:检查,检查下面我的答案)

最佳答案

您可以将问题分解为两个子问题:

  1. 将您的字符串解析为一个包含两个日期和一个房间号的对象。
  2. 找出两个给定日期之间的天数。

对于第一个子问题,您可以使用正则表达式和 Date 对象构造函数。

function parseDate(date) {
return new Date(date.substring(0,4), date.substring(4,6)-1, date.substring(6,8));
}

var input = '#CI[20131229]CO[20131231]PV1,#CI[20130918]CO[20130919]PV3,#CI[20131009]CO[20131011]PV3,#CI[20131226]CO[20140103]PV4,#CI[20131226]CO[20140103]PV3';

var regExp = /CI\[(\d{8})\]CO\[(\d{8})\](PV\d)/g;
var items = [];
var match = regExp.exec(input);
while(match != null) {
items.push({
ci : parseDate(match[1]),
co : parseDate(match[2]),
room : match[3]
});
match = regExp.exec(input);
}

对于第二个子问题,您可以使用循环来生成两个日期之间的所有日期:

function daysBetween(startDate, endDate) {
var days = [], current = startDate;
while(current <= endDate) {
days.push(current);
current = new Date(current.getTime() + (24 * 60 * 60 * 1000));
}
return days;
}

关于javascript - 获取从字符串中检索到的两个日期之间的所有日期并制作一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com