javascript日期字符串数组推送问题!不是想要的值
javascript date String array push issue! Not the desired value
我想要一个介于开始日期和结束日期之间的日期
d = 'Tue Oct 2 00:00:00 UTC+0900 2018';
date2 = 'Fri Oct 5 00:00:00 UTC+0900 2018';
var arrTemp = new Array();
//var dispalyHTML = '';
while(d <= date2){
//dispalyHTML += d.yyyymmdd();
var date_yy = d.getFullYear();
var date_mm = (d.getMonth()+1) < 10 ? '0' +(d.getMonth()+1):(d.getMonth()+1);
var date_dd = d.getDate() <10 > '0'+d.getDate():d.getDate();
alert("date_yy+date_mm+date_dd=="+date_yy+date_mm+date_dd);
**arrTemp.push(date_yy+date_mm+date_dd);**
d = d.addDays(1);
}
for(j=0; j < arrTemp.length; j++){
alert("arrTemp[j]=="+arrTemp[j]);
}
第一个值,
是期望值。值得!
date_yy+date_mm+date_dd==20181002
date_yy+date_mm+date_dd==20181003
date_yy+date_mm+date_dd==20181004
date_yy+date_mm+date_dd==20181005
但是 arrTemp[j] 值,不是所需的值。
arrTemp[j]==202802
arrTemp[j]==202803
arrTemp[j]==202804
arrTemp[j]==202805
你知道为什么吗?
使用 moment,永远不要尝试使用自己的日期函数。
let date1 = moment('02/10/2018', 'DD/MM/YYYY');
let date2 = moment('05/10/2018', 'DD/MM/YYYY');
let noOfDays = moment(date2).diff(moment(date1), 'days') + 1;
days = (date, noOfDays) => Array.from(Array(noOfDays), (_, i) => moment(date, 'DD/MM/YYYY').add(i, 'd').format('YYYYMMDD'));
console.log(days('02/10/2018', noOfDays));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
上面的代码有一些错误,我已经更正了。当推送到数组时,应该使用 .toString() 否则它需要时间戳值。请尝试一下。
d = new Date('Tue Oct 2 00:00:00 UTC+0900 2018');
date2 = new Date('Fri Oct 5 00:00:00 UTC+0900 2018');
var arrTemp = [];
var dispalyHTML = '';
while(d <= date2){
var date_yy = d.getFullYear();
var date_mm = (d.getMonth()+1) < 10 ? '0' +(d.getMonth()+1):(d.getMonth()+1);
var date_dd = d.getDate() <10 ? '0'+d.getDate():d.getDate();
alert("date_yy+date_mm+date_dd=="+date_yy+date_mm+date_dd);
arrTemp.push(date_yy.toString()+date_mm.toString()+date_dd.toString());
d.setDate(d.getDate()+1);
}
for(j=0; j < arrTemp.length; j++){
alert("arrTemp[j]=="+arrTemp[j]);
}
我想要一个介于开始日期和结束日期之间的日期
d = 'Tue Oct 2 00:00:00 UTC+0900 2018';
date2 = 'Fri Oct 5 00:00:00 UTC+0900 2018';
var arrTemp = new Array();
//var dispalyHTML = '';
while(d <= date2){
//dispalyHTML += d.yyyymmdd();
var date_yy = d.getFullYear();
var date_mm = (d.getMonth()+1) < 10 ? '0' +(d.getMonth()+1):(d.getMonth()+1);
var date_dd = d.getDate() <10 > '0'+d.getDate():d.getDate();
alert("date_yy+date_mm+date_dd=="+date_yy+date_mm+date_dd);
**arrTemp.push(date_yy+date_mm+date_dd);**
d = d.addDays(1);
}
for(j=0; j < arrTemp.length; j++){
alert("arrTemp[j]=="+arrTemp[j]);
}
第一个值, 是期望值。值得!
date_yy+date_mm+date_dd==20181002
date_yy+date_mm+date_dd==20181003
date_yy+date_mm+date_dd==20181004
date_yy+date_mm+date_dd==20181005
但是 arrTemp[j] 值,不是所需的值。
arrTemp[j]==202802
arrTemp[j]==202803
arrTemp[j]==202804
arrTemp[j]==202805
你知道为什么吗?
使用 moment,永远不要尝试使用自己的日期函数。
let date1 = moment('02/10/2018', 'DD/MM/YYYY');
let date2 = moment('05/10/2018', 'DD/MM/YYYY');
let noOfDays = moment(date2).diff(moment(date1), 'days') + 1;
days = (date, noOfDays) => Array.from(Array(noOfDays), (_, i) => moment(date, 'DD/MM/YYYY').add(i, 'd').format('YYYYMMDD'));
console.log(days('02/10/2018', noOfDays));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
上面的代码有一些错误,我已经更正了。当推送到数组时,应该使用 .toString() 否则它需要时间戳值。请尝试一下。
d = new Date('Tue Oct 2 00:00:00 UTC+0900 2018');
date2 = new Date('Fri Oct 5 00:00:00 UTC+0900 2018');
var arrTemp = [];
var dispalyHTML = '';
while(d <= date2){
var date_yy = d.getFullYear();
var date_mm = (d.getMonth()+1) < 10 ? '0' +(d.getMonth()+1):(d.getMonth()+1);
var date_dd = d.getDate() <10 ? '0'+d.getDate():d.getDate();
alert("date_yy+date_mm+date_dd=="+date_yy+date_mm+date_dd);
arrTemp.push(date_yy.toString()+date_mm.toString()+date_dd.toString());
d.setDate(d.getDate()+1);
}
for(j=0; j < arrTemp.length; j++){
alert("arrTemp[j]=="+arrTemp[j]);
}