Как обрабатывать крайние случаи для проверки, является ли данная дата прошлым месяцем или нет? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть следующая функция: она принимает дату и проверяет, указана ли данная дата в прошлом месяце или нет.

const { 
subMonths, 
getMonth, 
lastDayOfMonth, 
startOfMonth, 
isWithinInterval 
} = require('date-fns')

function isLastMonth(date) {

    let lastMonthDateOfGivenDate = subMonths(new Date(date), 1)

    let today = Date.now()
    let lastMonthDate = subMonths(today, 1);

    let firstDayOfLastMonth = startOfMonth(lastMonthDate)
    let lastDayOfLastMonth = lastDayOfMonth(lastMonthDate)

    if (isWithinInterval(lastMonthDateOfGivenDate, { start: firstDayOfLastMonth, end: lastDayOfLastMonth }))
        console.log("true")
    else
        console.log('false')

}

isLastMonth("2020-03-30T15:24:02.647Z")

Проблема в том, что я не могу проверить даты, которые есть 31 день или 30 дней для февраля.

Есть решение или другой подход к этой проблеме? Спасибо.

1 Ответ

1 голос
/ 30 марта 2020

Решение состоит в следующем

import {subMonths, startOfMonth, endOfMonth, isWithinInterval} from 'date-fns'

function isLastMonth(date) {

    let today = Date.now()
    let lastMonthDate = subMonths(today, 1);

    let firstDayOfLastMonth = startOfMonth(lastMonthDate)
    let lastDayOfLastMonth = endOfMonth(lastMonthDate)

    return isWithinInterval(new Date(date), { start: firstDayOfLastMonth, end: lastDayOfLastMonth })

}

Все крайние случаи будут обрабатываться самой javascript; например, датой предыдущего месяца 31 мая 2020 года будет 30 апреля 2020 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...