フォームでの営業日日数の計算
1. 使用シーン
場合によっては、2つの特定の日付範囲内の法定平日日数を計算する必要があります。
2. 機能を実現する
2.1. 構成表ページ

2.2. 2つの日付の間に何営業日があるかを計算します
次のコードをjsパネルにコピーします。
/**
* 计算两个日期之间有多少工作日
* @param {string} startTime 开始日期
* @param {string} endTime 结束日期
* @param {array} chinsesHolidays 中国特殊节假日(调休、补班)
*/
export function getWorkdaysCount(startTime = '', endTime = '', chinsesHolidays = []) {
let currentDate = new Date(startTime);
const endDate = new Date(endTime);
if (currentDate > endDate) {
return 0;
}
let workdaysCount = 0;
while (currentDate <= endDate) {
let dayOfWeek = currentDate.getDay();
let currentDateString = this.utils.formatter('date', currentDate.getTime(), 'YYYY-MM-DD');
if (dayOfWeek > 0 && dayOfWeek < 6) {
// 星期一 - 星期五
if (!chinsesHolidays.includes(currentDateString)) {
workdaysCount++;
}
} else {
// 星期六 - 星期日
if (chinsesHolidays.includes(currentDateString)) {
workdaysCount++;
}
}
currentDate.setDate(currentDate.getDate() + 1);
}
return workdaysCount;
}
貼り付け後の効果は以下の通りです

2.3. 日付コンポーネントの使用
次のコードをページjsにコピーし、日付コンポーネントにバインドします (両方ともバインドします。コンポーネントの一意のidを変更することに注意してください)。
export function onChange({ value }) {
const startDate = this.utils.formatter('date', this.$('< 开始日期 >').getValue(), 'YYYY-MM-DD');
const endDate = this.utils.formatter('date', this.$('< 结束日期 >').getValue(), 'YYYY-MM-DD');
const specialHolidays = [
'2024-01-01',
'2024-02-04',
'2024-02-12',
'2024-02-13',
'2024-02-14',
'2024-02-15',
'2024-02-16',
'2024-02-18',
'2024-04-04',
'2024-04-05',
'2024-04-07',
'2024-04-28',
'2024-05-01',
'2024-05-02',
'2024-05-03',
'2024-05-11',
'2024-06-10',
'2024-09-14',
'2024-09-17',
'2024-09-29',
'2024-10-01',
'2024-10-02',
'2024-10-03',
'2024-10-04',
'2024-10-07',
'2024-10-12',
]; // 2024法定节假日日期
const workdays = this.getWorkdaysCount(startDate, endDate, specialHolidays);
this.$('< 工作日天数 >').setValue(workdays);
}

注意: 1、Specialholidaysパラメータには毎年の祝日の日付が含まれていますが、通常の週末の日付は含まれていません。たとえば、2024.05.04は週末の時間も特別な法定休日です今年の月曜日から金曜日まで休憩した日付か、土曜日の日曜日に出勤した日付を記入するだけです。 2、毎年の法定休日の日付が異なるため、毎年の法定休日の日付を手動で維持する必要がある。
3. 効果を実現する

4. オンラインで試遊する
この文書は機械翻訳により生成されています。翻訳により生じた齟齬や相違点は拘束力を持たず、コンプライアンスや執行目的において法的効力はありません。
このドキュメントは役に立ちましたか?

