如何使用javascript/react获取两个日期之间的完整日期?

如何使用javascript/react获取两个日期之间的完整日期?,javascript,html,jquery,css,date,Javascript,Html,Jquery,Css,Date,我的要求是得到两个日期之间的天数 例如,开始日期为02/20/2020至01/03/2020我想显示如下结果 2月20日星期四、2月21日星期五、3月1日星期一 我在StackOverflow中经历了这个场景,但没有得到预期的解决方案 是否有人可以指导使用javascript或react实现此场景?您可以计算日期之间的差异,然后组成所需的日期数组,并将其转换为所需格式的日期字符串: const d1=新日期('02/20/2020'), d2=新日期(“2020年1月3日”), 差异=(d2-

我的要求是得到两个日期之间的天数

例如,开始日期为
02/20/2020
01/03/2020
我想显示如下结果

2月20日星期四、2月21日星期五、3月1日星期一

我在StackOverflow中经历了这个场景,但没有得到预期的解决方案


是否有人可以指导使用javascript或react实现此场景?

您可以计算日期之间的差异,然后组成所需的日期数组,并将其转换为所需格式的日期字符串:

const d1=新日期('02/20/2020'),
d2=新日期(“2020年1月3日”),
差异=(d2-d1)/864e5,
dateFormat={weekday:'long',month:'short',day:'numeric'},
dates=Array.from(
{length:diff+1},
(u,i)=>{
const date=新日期()
date.setDate(d1.getDate()+i)
const[weekdayStr,dateStr]=date.toLocaleDateString('en-US',dateFormat).split(','))
返回`${dateStr}${weekdayStr}`
}
)
console.log(日期)

。作为控制台包装{min height:100%;}
您可以首先创建两个日期对象,一个用于开始日期,另一个用于结束日期。然后,找出这些日期之间有多少天。最后,您可以循环这个数字,得到当前日期加上循环中的当前索引,然后打印出来

作为反应组分:

const-App=()=>{
const[dates,setDates]=React.useState([]);
React.useffect(()=>{
施工开始日期=新日期(2020年2月20日);
const end=新日期('2020年1月3日');
const daysBetween=(end.getTime()-start.getTime())/(1000*3600*24);
常数arr=[];
for(设i=0;i(
  • {date.toLocaleDateString( “恩,我们”, {月:“短”,日:“两位数”,工作日:“长”} )}
  • ))} ); } ReactDOM.render(,document.getElementById(“app”)
    获取JavaScript中两个日期之间差异的另一种方法:

    const d1 = new Date("06/30/2019"); 
    const d2 = new Date("07/30/2019"); 
    
    // To calculate the time difference of two dates 
    const timeDiff = d2.getTime() - d1.getTime(); 
    
    // To calculate the no. of days between two dates 
    const days = timeDiff / (1000 * 3600 * 24); 
    
    //to list the days
    while (days !== 0) {
        let date = new Date(d2)
        date.setDate(date.getDate() - days)
        console.log(date)
        days--
    }
    

    从给定的日期开始,找出天数的差异,然后根据天数,使用
    toLocaleString()
    循环并记录其间的每个增量日

    const startDate=“02/20/2020”;
    const endDate=“03/01/2020”;
    const diffTime=Math.abs(新日期(endDate)-新日期(startDate));
    常数diffDays=0 | diffTime/864e5;
    
    对于(设i=0;i您可以使用
    momentjs
    获得结果:

    
    
    //let moment = require("moment");
    
    let date = [];
    
    let startDate = "02/20/2020";
    let endDate = "01/03/2020";
    while ( moment(startDate, "MM/DD/YYYY").valueOf() <= moment(endDate, "DD/MM/YYYY").valueOf()) {
      date.push(moment(startDate, "MM/DD/YYYY").format("MMM DD dddd"));
      startDate = moment(startDate, "MM/DD/YYYY").add(1, "days").format("MM/DD/YYYY");
    }
    console.log(date);
    
    
    //让力矩=要求(“力矩”);
    让日期=[];
    让startDate=“02/20/2020”;
    让endDate=“01/03/2020”;
    
    while(time(startDate,“MM/DD/yyyyy”).valueOf()我也想知道重复日期的天数。玩得开心吗?:-D@YevgenGorbunkov哦,我想我在你的回答后一分钟提交了我的答案,所以,是的,因为OP询问了js或react,我想我会做一些稍微不同的事情由于OP希望打印开始日期和结束日期之间的完整日期,我已重新打开此文件。重复目标仅显示了如何获取两个日期之间的天数,而不是如何打印每个日期。@John\u ny这将有帮助无需
    Math.ceil()
    (只要您尝试以较短的方式发布,就可以按
    const diffDays=0 | diffTime/864e5
    执行),因为生成的时间戳可以除以(默认情况下为1000*60*60*24)@YevgenGorbunkov,谢谢你指出,已经更新了答案。非常欢迎你,你可以采取另一个行动-你的日期字符串格式与要求的有所不同(详情请参阅OP)。顺便说一句,你可以使用
    (i*24*60*60*1000)
    以同样的方式缩短:
    i*864e5
    您的答案没有提供预期的结果(日期字符串数组根据OP的格式进行了相应的调整)。此外,您还可以通过直接减去
    date2
    date1
    (无
    .getTime()
    )和
    1000*3600*24=864e5
    ,获得上述结果