JavaScript:如何获得没有时区的简单日期
我有一个在日期范围内生成随机日期的代码,该代码为我提供了日期,当记录时,生成以下格式: 2019年9月25日星期三05:00:00 GMT+0500(巴基斯坦标准时间) 我只想得到没有时区和日期的日期,具体如下: 2019-09-25 我正在尝试使用以下代码获取指定日期之间的随机日期:JavaScript:如何获得没有时区的简单日期,javascript,arrays,date,date-format,Javascript,Arrays,Date,Date Format,我有一个在日期范围内生成随机日期的代码,该代码为我提供了日期,当记录时,生成以下格式: 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-
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));
var startDate=新日期(“2019-08-26”)//YYYY-MM-DD
var endDate=新日期(“2019-09-25”)//YYYY-MM-DD
var getDateArray=函数(开始、结束){
var arr=新数组();
var dt=新日期(开始);
while(dt0){
//选择一个随机索引
索引=Math.floor(Math.random()*ctr);
//将ctr减少1
ctr--;
//并用它交换最后一个元素
温度=arra1[ctr];
arra1[ctr]=arra1[index];
arra1[索引]=温度;
}
返回arra1;}
console.log(shuffle(dateArr));
这不是一个重复的问题,因为我试图实现不同的和非常具体的格式化 使用
.toISOString()
和.substr()
。例如:
var dt=新日期(“2019-09-25”);
console.log(dt.toISOString().substr(0,10));//2019-09-25
一种解决方案是通过自定义格式化函数(即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 getDates=函数(开始日期、结束日期){
var日期=[],
当前日期=开始日期,
addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
};
虽然(currentDate可能的副本您应该使用moment.js。这些文档很广泛,但它可以完全满足您的需要。@Igor这不是一个真正的副本;最重要的答案集中在如何实现与OP尝试获取的格式完全不同的格式。您阅读了文档中的日期吗?@Igor我已经应用了该解决方案,但它没有它给了我以下错误:TypeError:dateArr.toISOString不是一个函数dateArr
是一个数组。.toISOString
是Date
对象的方法,而不是数组的方法。您需要在特定日期调用它,而不是在日期数组中调用它。
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);
});