如何使用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
,获得上述结果