javascript - 在js中使用两个日期获取天数
问题描述
我遇到了这个麻烦,我只能得到指定的 2 个日期之间的天数。请看下面的代码:
var getDaysArray = function(start, end) {
for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
arr.push(new Date(dt));
}
return arr;
};
var daylist = getDaysArray(new Date('08/13/2018'), new Date('08/17/2018'));
daylist.map((v) => v.toISOString().slice(0, 10)).join("");
console.log(daylist);
上面代码的输出是:
预期输出(由于开始和结束日期08/13/2018
和08/17/2018
):
0: Date 2018-08-13T16:00:00.000Z
1: Date 2018-08-14T16:00:00.000Z
2: Date 2018-08-15T16:00:00.000Z
3: Date 2018-08-16T16:00:00.000Z
4: Date 2018-08-17T16:00:00.000Z
注意:上面的代码来自某处找到的 SO 答案之一。
解决方案
toISOString
以 UTC 格式表示日期。您可能处于正时区偏移中,这就是为什么您的日期对象的 UTC 表示是休息日。您可以toLocaleString
改为使用您的时区来表示您的日期。
另一个问题是Array.prototype.map
重新调整一个您忘记分配的新数组。daylist
如果没有该分配,daylist
将不会进行任何更改。
下面的代码片段根据您的要求工作。
var getDaysArray = function(start, end) {
for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
arr.push(new Date(dt));
}
return arr;
};
var daylist = getDaysArray(new Date('08/13/2018'), new Date('08/17/2018'));
daylist = daylist.map((v) => v.toLocaleString());
console.log(daylist);
推荐阅读
- .net - 用于数据库视图和存储过程的 MVC EF 数据注释
- php - 为什么我的 php 中的多语言网站不能正常工作?
- java - java.lang.ClassCastException:java.lang.String 无法转换为 java.util.Map
- elasticsearch - Elasticsearch 中大型静态数据的分片和节点
- mysql - Docker-Compose - 无法使用命令--init-file 初始化 MySQL 数据库
- python - 如何迭代列表的每个元素以将特定列相乘以获得新的计算列
- javascript - 在 JavaScript 中填充每一行的标题
- linux - 如何执行logstash?(发生了错误)
- android - 为什么这个 SQLite 查询在 AS3 AIR (Android) 项目中不起作用?
- reactjs - 具有延迟加载行的 GroupBy