【问题标题】:How to get data for same dates using moment?如何使用时刻获取相同日期的数据?
【发布时间】:2019-01-24 16:29:26
【问题描述】:

我有以下方法,如果日期在Between,则返回true,但如果日期与开始/结束日期相等,我也想返回true,是否可以用moment做到这一点?

main.ts

function checkDateRange(startDate: string, endDate: string, fillDate: string): boolean {
    if (fillDate > startDate && fillDate < endDate) {
        const _fillDate = moment(fillDate).utc();
        return _fillDate.isBetween(startDate, endDate);
    }

    return false;
}

【问题讨论】:

  • 不应该第一步是将字符串参数解析为时刻日期吗?之后,moment 提供了几种处理相等和不等式的方法,包括 diff-ing、isBefore、isSame、isAfter

标签: javascript typescript momentjs


【解决方案1】:

由于函数返回一个布尔值,所以只返回条件测试的值。 !before 和 !after 与 in-between 相同,包括...

function checkDateRange(startDateStr: string, endDateStr: string, fillDateStr: string): boolean {
    let startDate = moment(startDateStr);
    let endDate = moment(endDateStr);
    let fillDate = moment(fillDateStr);

    return !fillDate.isBefore(startDate) && !fillDate.isAfter(endDate)
}

【讨论】:

    【解决方案2】:

    您可以将包容性参数添加到isBetween

    2.13.0 版本引入了包容性。 [ 表示包含一个值。 ( 表示排除。 如果使用inclusivity参数,则必须同时传递两个指标。

    如果不指定 inclusivity 参数,Moment 将默认为()

    您的代码可能如下所示:

    function checkDateRange(startDate: string, endDate: string, fillDate: string): boolean {
        if (fillDate > startDate && fillDate < endDate) {
            const _fillDate = moment(fillDate).utc();
            return _fillDate.isBetween(startDate, endDate, null, '[]');
        }
    
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多