0

我有一个函数,它接受一个日期并检查给定的日期是否在上个月。

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")

问题是我无法检查 2 月有 31 天或 30 天的日期。

这个问题的任何解决方案或其他方法?谢谢你。

4

1 回答 1

1

解决方法如下

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 自己处理;例如,2020 年 5 月 31 日的上个月日期将是 2020 年 4 月 30 日。

于 2020-03-30T07:40:27.270 回答