我试图在两天之间创建一个天数列表。
我创建了如下解决方案:
this.daysBetween = [];
while (dateFrom.getDate() !== dateTo.getDate()+1 ) {
this.daysBetween.push(this.dateFrom);
dateFrom.setDate(dateFrom.getDate()+1);
}
但它只在90%的情况下有效(如果有月变化,它就不起作用)
例如,当我选择日期时:
dateFrom: 29 august
dateTo: 30 august
从8月29日到9月30日,从8月31日,它给我打印了几天
有没有办法解决我的问题,或者有更好的办法?
编辑:
我的问题和建议的问题不同,因为在我的问题中,我有两个日期作为输入
例如
let dateFrom = new Date(2018, 9, 29);
let dateTo = new Date(2018, 9, 30);
在建议的重复结果,这可能是int号1
我的问题是如何循环两个日期之间的所有日期(dateFrom,dateTo)
其中,这两个日期示例的结果(dateFrom,dateTo)
将列出两个元素:
Mon Oct 29 2018 00:00:00 GMT+0100
Tue Oct 30 2018 00:00:00 GMT+0100
Github上的Javascript版本
class MyDate {
dates: Date[];
constructor() {
this.dates = [];
}
private addDays(currentDate) {
let date = new Date(currentDate);
date.setDate(date.getDate() + 1);
return date;
}
getDates(startDate: Date, endDate: Date) {
let currentDate: Date = startDate;
while (currentDate <= endDate) {
this.dates.push(currentDate);
currentDate = this.addDays(currentDate);
}
return this.dates;
}
}
let md = new MyDate();
let daysBetween: Date[] = md.getDates(new Date(2018, 7, 22), new Date(2018, 8, 30));
console.log(daysBetween);
你可以以毫秒为单位计算差值,然后将其转换为以天为单位的差值。
然后,您可以使用它来用Date对象填充数组:
const MS_PER_DAY: number = 1000 x 60 x 60 x 24;
const start: number = dateFrom.getTime();
const end: number = dateTo.getTime();
const daysBetweenDates: number = Math.ceil((end - start) / MS_PER_DAY);
// The days array will contain a Date object for each day between dates (inclusive)
const days: Date[] = Array.from(new Array(daysBetweenDates + 1),
(v, i) => new Date(start + (i * MS_PER_DAY)));
你可以使用时刻的持续时间:
/**
* Get an array of moment instances, each representing a day beween given timestamps.
* @param {string|Date} from start date
* @param {string|Date} to end date
*/
function daysBetween(from, to) {
const fromDate = moment(new Date(from)).startOf('day');
const toDate = moment(new Date(to)).endOf('day');
const span = moment.duration(toDate.diff(fromDate)).asDays();
const days = [];
for (let i = 0; i <= span; i++) {
days.push(moment(fromDate).add(i, 'day').startOf('day'));
}
return days;
}
const days = daysBetween('29-Aug-2018', '30-Sep-2018');
console.info(days.map(d => d.toString()).join('\n'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
问题内容: 使用标准的mysql函数可以编写查询,该查询将返回两个日期之间的天数列表。 例如,给定2009-01-01和2009-01-13,它将返回一个具有以下值的列表: 编辑:看来我还不清楚。我要生成此列表。我在数据库中存储了值(按日期时间),但希望将它们在左外部联接中汇总到上述日期列表中(我希望这种联接的某些右侧在几天内会为null并将对此进行处理) )。 问题答案: 我将使用此存储过程将所
问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em
问题内容: 在我的应用程序中,用户应从选择日期。问题是生成此列表。例如,我需要 2010年至2013年 或 6月至8月 之间的所有日期(期间可能是 day , month , year )。是否有任何方法可以获取该数据? 范例:我需要 2013年1月1* 日 至2013年1月1 日之间的日期 * 2013年1月1日 2013年2月1日 2013年3月1日 2013年4月1日 2013年5月1日
问题内容: 我需要一个查询,该查询将输出两个给定日期之间的日期列表。 例如,如果我的开始日期是2016年2月23日,结束日期是2016年2月3日,我期望获得以下输出: 另外,我只需要使用SQL进行上述操作(不使用“ WITH”语句或表)。请帮忙。 问题答案: 我使用的通常是DB2 for iSeries,所以我将为您提供一个仅适用于它的SQL解决方案。目前,我无法访问服务器,因此该查询未经测试,但
问题内容: 我从Stackoverflow那里获得了这段代码,并对其进行了少许更改以适应今天的日期。 我想检查今天是否适合两个日期之间。但这是行不通的。我想念什么? 问题答案: 编辑: 使用<=或> =来计算今天的日期 这是您的代码的正确答案。只需使用strtotime()php函数
问题内容: 我需要生成两个给定日期之间的所有日期。只要只有一个日期范围,此方法就可以正常工作。但是,如果我有多个日期范围,则此解决方案不起作用。我在这里以及Asktom上都进行了搜索,但是找不到相关的指针/解决方案。 我使用all_objects和CONNECT BY ROWNUM尝试了两种解决方案,但是没有运气。这是问题说明:sqlfiddle 输入 输出 问题答案: