【问题标题】:How to handle edge cases for checking whether the given date is last month or not?如何处理边缘情况以检查给定日期是否是上个月?
【发布时间】:2020-07-10 12:28:11
【问题描述】:

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

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 天的日期。

这个问题有什么解决方案或其他方法吗?谢谢。

【问题讨论】:

标签: javascript date-fns


【解决方案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 日。

【讨论】:

    猜你喜欢
    • 2012-05-14
    • 1970-01-01
    • 2018-07-15
    • 2014-01-20
    • 1970-01-01
    • 2013-10-31
    • 2018-09-01
    • 2021-12-15
    相关资源
    最近更新 更多