[英]JavaScript: How to get simple date without timezone
我有在日期范围内生成随机日期的代码,它给了我日期,当记录时,产生这种格式:
2019 年 9 月 25 日星期三 05:00:00 GMT+0500(巴基斯坦标准时间)
我只想获得没有时区和日期的日期,具体如下:
2019-09-25
我正在尝试使用以下代码在指定日期之间获取随机日期:
var startDate = new Date("2019-08-26"); //YYYY-MM-DD
var endDate = new Date("2019-09-25"); //YYYY-MM-DD
var getDateArray = function(start, end) {
var arr = new Array();
var dt = new Date(start);
while (dt <= end) {
arr.push(new Date(dt));
dt.setDate(dt.getDate() + 1);
}
return arr;
}
var dateArr = getDateArray(startDate, endDate);
function shuffle(arra1) {
var ctr = arra1.length, temp, index;
// While there are elements in the array
while (ctr > 0) {
// Pick a random index
index = Math.floor(Math.random() * ctr);
// Decrease ctr by 1
ctr--;
// And swap the last element with it
temp = arra1[ctr];
arra1[ctr] = arra1[index];
arra1[index] = temp;
}
return arra1; }
console.log(shuffle(dateArr));
这不是一个重复的问题,因为我试图实现不同且非常具体的格式。
一种解决方案是通过自定义格式化函数(即formatDate()
)映射arra1
每个项目,其中.getDate()
、 .getMonth()
和.getYear()
用于填充格式化字符串:
function formatDate(date) {
const year = date.getFullYear();
/* getMonth returns dates from 0, so add one */
const month = date.getMonth() + 1;
const day = date.getDate();
return `${year}-${month < 10 ? '0' : ''}${ month }-${ day < 10 ? '0' : '' }${day}`
}
这里需要考虑的一些要点是:
这可以添加到您现有的代码中,如下所示:
var startDate = new Date("2019-08-26"); //YYYY-MM-DD var endDate = new Date("2019-09-25"); //YYYY-MM-DD function formatDate(date) { const year = date.getFullYear(); /* getMonth returns dates from 0, so add one */ const month = date.getMonth() + 1; const day = date.getDate(); return `${year}-${month < 10 ? '0' : ''}${ month }-${ day < 10 ? '0' : '' }${day}` } var getDateArray = function(start, end) { var arr = new Array(); var dt = new Date(start); while (dt <= end) { arr.push(new Date(dt)); dt.setDate(dt.getDate() + 1); } return arr; } var dateArr = getDateArray(startDate, endDate); function shuffle(arra1) { var ctr = arra1.length, temp, index; // While there are elements in the array while (ctr > 0) { // Pick a random index index = Math.floor(Math.random() * ctr); // Decrease ctr by 1 ctr--; // And swap the last element with it temp = arra1[ctr]; arra1[ctr] = arra1[index]; arra1[index] = temp; } /* Update this line */ return arra1.map(formatDate); } console.log(shuffle(dateArr));
使用.toISOString()
和.substr()
。 例子:
var dt = new Date("2019-09-25"); console.log(dt.toISOString().substr(0,10)); // 2019-09-25
这种方法的优点是Date
对象内置了.toISOString()
方法,因此您不必重新发明轮子。 但是,该方法返回完整的 ISO 字符串,例如“2019-09-25T00:00:00.000Z”。 因此,您可以使用.substr
仅检索您想要使用的部分。
var getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
while (currentDate <= endDate) {
dates.push(currentDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};
// Usage
var dates = getDates(new Date(2019, 10, 22),
new Date(2019, 11, 25));
dates.forEach(function(date) {
console.log(date);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.