规则8:30:00至12:00:00为半天14:00:00至18:00:00为半天,8:30:00至18:00:00为一天,两个日期2024-09-14 8:30:00/2024-09-15 12:00:00,使用js或者moment计算出这两个日期他们使用的多少天
时间: 2024-09-15 14:10:48 浏览: 40
crepe:Rust中的Datalog编译器作为程序宏
在JavaScript中,我们可以使用`moment.js`库来方便地处理日期时间的计算。首先需要安装`moment-timezone`扩展,因为它包含了世界时区信息:
```bash
npm install moment moment-timezone
```
然后可以使用以下代码来计算两个日期之间的总工作日天数:
```javascript
const moment = require('moment-timezone');
// 定义工作时间和日期
const workHoursPerDay = { halfDay: '8:30:00', fullDay: '18:00:00'};
const startWorkDate = moment.tz('2024-09-14T08:30:00Z', 'HH:mm:ss');
const endHalfWorkDate = moment.tz('2024-09-15T12:00:00Z', 'HH:mm:ss');
let totalDays = 0;
let currentDate = startWorkDate.clone();
while (currentDate.isBefore(endHalfWorkDate)) {
if (currentDate.hour() >= workHoursPerDay.halfDay.split(':')[0]) {
// 半天算作0.5天
totalDays += 0.5;
} else {
// 如果还没到下班时间,不计入全天
}
currentDate.add(1, 'day'); // 加一天
}
// 接下来考虑完整的工作日,直到第二个日期结束
if (currentDate.isSameOrBefore(endHalfWorkDate)) {
currentDate.add(1, 'day'); // 跳过半个工作日
}
while (currentDate.isBefore(moment.tz('2024-16T08:30:00Z', 'YYYY-MM-DDTHH:mm:ss'))) {
if (currentDate.hour() >= workHoursPerDay.fullDay.split(':')[0]) {
// 全天算作1天
totalDays++;
} else {
// 如果还没到上班时间,不算作工作日
}
currentDate.add(1, 'day');
}
console.log("总共使用了 " + totalDays.toFixed(1) + " 天");
阅读全文