JavaScript:どのようにいつかの曜日を取得しますか?

2014 ワード

私たちが出会う必要があるのは、今日またはある日の曜日の開始と終了日を取得することです.
私達はここで今日の所在週の最終日を取得します.(new Date).getDay()を通じて今日は何曜日ですか?そしてこれを通じて、あるいは一定の日数を差し引いてもいいです.今週の開始日と終了日です.
function getWeekStartAndEnd() {
    const oneDayTime = 1000 * 60 * 60 * 24; //          
    const today = new Date();
    const todayDay = today.getDay(); //         ,    3
    const startDate = new Date(
        today.getTime() - oneDayTime * (todayDay - 1)
    );
    const endDate = new Date(today.getTime() + oneDayTime * (7 - todayDay));

    return { startDate, endDate };
}
const week = getWeekStartAndEnd();
console.log(week.startDate, week.endDate);
完璧ですか?しかし、ここに大きなバグがあります.注意:今日が日曜日であれば、todayDayは0になります.もし上記の考えであれば、月曜日の日付は来週の月曜日の日付になります.日曜日の日付は来週の日曜日の日付になります.したがって、ここでは特別な処理が必要です.today Dayが0の場合、7に割り当てられます.また、特定の一日がある曜日を取得するタイムスタンプを導入することもできます.
最終的な解決策
function getWeekStartAndEnd(timestamp) {
    const oneDayTime = 1000 * 60 * 60 * 24; //          
    const today = timestamp ? new Date(timestamp) : new Date();
    const todayDay = today.getDay() || 7; //         ,      7
    const startDate = new Date(
        today.getTime() - oneDayTime * (todayDay - 1)
    );
    const endDate = new Date(today.getTime() + oneDayTime * (7 - todayDay));

    return { startDate, endDate };
}
拡張
今日の日付を出力したいですが、今週中の日付はどうなりますか?簡単です.この一週間の最初の日を得てから、一日目にoneDayTime*iのタイムスタンプを入れてください.i日目の日付です.または前の日の基礎にone DayTimeを加えてもいいです.
function getAllWeekToday() {
    const oneDayTime = 1000 * 60 * 60 * 24;
    const today = new Date();
    const todayDay = today.getDay() || 7; //         ,      7
    const startDate = new Date(
        today.getTime() - oneDayTime * (todayDay - 1)
    );
    let dateList = [startDate];

    for (let i = 1; i < 7; i++) {
        dateList.push(new Date(startDate.getTime() + oneDayTime * i));
    }
    return dateList;
}
もっと多くの記事はクリックできます.蚊のブログ