Node.js/JavaScript最近30日間の日付を取得
3146 ワード
テキストリンク:http://www.childsay.com/js-last-30-dates.html
毎月の日数は28、29、30、31の4つのケースがあるため、最近の30日間の日付には次の3つのケースがあります.開始日と終了日はいずれも現在の月で、同じ月 開始日は先月、終了日は現在の月 です.開始日は前月、中間は2月、終了日は現在の月 日付の処理にはdayjsモジュールが使用されます
取得日(終了日)と開始日
//dayjs日付の日数、月、年を取得する方法で、取得した月が実際より1小さいことに注意し、すべて1を追加する必要があります.
月の合計日数を取得し、最近の30日間が月をまたいでいるかどうかを計算します.
指定範囲の配列を生成し、以下のコードは[1,2,3,.....30]を生成することを示し、末尾の数字は含まれないことに注意する.
_.eachは配列をループすることを表し、forまたはArray map法に類似する.
ポイントは、完全なコードの次のとおりです.
毎月の日数は28、29、30、31の4つのケースがあるため、最近の30日間の日付には次の3つのケースがあります.
npm install --save dayjs
取得日(終了日)と開始日
// dayjs
const endDayjs = dayjs();
// dayjs , 30 , , 29
const startDayjs = dayjs().subtract(29, 'days');
//dayjs日付の日数、月、年を取得する方法で、取得した月が実際より1小さいことに注意し、すべて1を追加する必要があります.
dayjs().year();
dayjs().month() + 1;
dayjs().date();
月の合計日数を取得し、最近の30日間が月をまたいでいるかどうかを計算します.
dayjs().daysInMonth()
指定範囲の配列を生成し、以下のコードは[1,2,3,.....30]を生成することを示し、末尾の数字は含まれないことに注意する.
_.range(1, 31)
_.eachは配列をループすることを表し、forまたはArray map法に類似する.
ポイントは、完全なコードの次のとおりです.
const _ = require('lodash');
const dayjs = require('dayjs');
function last30dates() {
const endDayjs = dayjs();
const endYear = endDayjs.year();
const endMonth = endDayjs.month() + 1;
const endMonthString = endMonth < 10 ? '0' + endMonth.toString() : endMonth.toString();
const endDate = endDayjs.date();
const startDayjs = dayjs().subtract(29, 'days');
const startYear = startDayjs.year();
const startMonth = startDayjs.month() + 1;
const startMonthString = startMonth < 10 ? '0' + startMonth.toString() : startMonth.toString();
const startDate = startDayjs.date();
const dates = [];
if (endMonth === startMonth) {
// ,
_.each(_.range(startDate, endDate + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${endYear}-${endMonthString}-${item}`);
});
} else if (endMonth === startMonth + 1 || startMonth - endMonth === 11) {
//
//
_.each(_.range(startDate, startDayjs.daysInMonth() + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${startYear}-${startMonthString}-${item}`);
});
//
_.each(_.range(1, endDate + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${endYear}-${endMonthString}-${item}`);
});
} else if (endMonth === startMonth + 2) {
// 、 , 2
//
_.each(_.range(startDate, startDayjs.daysInMonth() + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${startYear}-${startMonthString}-${item}`);
});
// 2
_.each(_.range(1, startDayjs.add(1, 'months').daysInMonth() + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${startYear}-02-${item}`);
});
//
_.each(_.range(1, endDate + 1), (item) => {
if (item < 10) {
item = '0' + item.toString();
}
dates.push(`${endYear}-${endMonthString}-${item}`);
});
}
return dates;
};