【问题标题】:check if selected dates are from the same week javascript检查所选日期是否来自同一周javascript
【发布时间】:2023-03-14 15:42:01
【问题描述】:

如何使用 javascript 查找给定日期是否来自同一周?

如果我给出日期,the week starts SUNDAY

以下日期介于(12 July 2015 to 18 July 2015)

07/13/2015 
07/14/2015 
07/15/2015 
07/16/2015 
07/20/2015 

在上面的列表中20 不是在本周跟随,而是在下一周。

有人能帮我解决这个问题吗?

我也想找到相同的检查以查看给定日期 are same date 是否喜欢

07/13/2015 
07/13/2015 
07/13/2015
07/13/2015 
07/13/2015 
07/13/2015 
07/14/2015 

除了14之外,以上都是相同的日期。所以请帮我找到if the given dates are same date.

I am okay to use external lib also

【问题讨论】:

  • 谁定义了一周的开始
  • 我猜对我们来说它是从星期日开始的,如果我错了请纠正我
  • 我的意思是..日期....是否将 12 视为开始或 19 日
  • 哦,对不起,必须从给定的第一个日期开始定义。

标签: javascript date compare


【解决方案1】:

更简单的解决方案是使用像 dayjs 这样的库,它只有 2kb。

在dayjs中你可以使用isSame()函数

例子:

dayjs().isSame('2021-10-09', 'week')

注意:一周从星期日开始。如果您希望将星期一作为一周的第一天,请不要忘记进行必要的更改。

【讨论】:

    【解决方案2】:

    如果一周总是从星期日开始,您可以通过执行以下操作来检查它们是否都在同一周:

    function getMinAndMax(dates) {
        var result = {};
        for (var index in dates) {
            var thisDate = dates[index]
            ,   dateParts = thisDate.split(/\//)
            ,   fullDate = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]);
            if(!result['max'] || fullDate > result['max']) {
                result['max'] = fullDate;
            }
            if(!result['min'] || fullDate < result['min']) {
                result['min'] = fullDate
            }
        }
        return result;
    }
    function isSameWeek(dates) {
        var minAndMax = getMinAndMax(dates)
        ,   dayOfWeek = {}
        dayOfWeek['min'] = minAndMax['min'].getDay();
        dayOfWeek['max'] = minAndMax['max'].getDay();
        if(minAndMax['max'] - minAndMax['min'] > 518400000 || dayOfWeek['min'] > dayOfWeek['max']) {
            return false;
        }
        return true;
    }
    

    要使用上述功能,您可以:

    var datesArray = [
        '07/13/2015'
    ,   '07/14/2015'
    ,   '07/15/2015'
    ,   '07/16/2015'
    ,   '07/10/2015'
    ];
    isSameWeek(datesArray); // false
    
    var datesArray2 = [
        '07/15/2015'
    ,   '07/14/2015'
    ,   '07/15/2015'
    ,   '07/15/2015'
    ,   '07/13/2015'
    ];
    isSameWeek(datesArray2); // true
    

    要查看所有日期是否相同,您可以包含之前声明的 getMinAndMax 函数,然后执行以下操作:

    function areAllDatesSame(dates) {
        var minAndMax = getMinAndMax(dates);
        return minAndMax['min'] == minAndMax['max']
    }
    

    你可以这样称呼它:

    var datesArray = [
        '07/13/2015'
    ,   '07/14/2015'
    ,   '07/15/2015'
    ,   '07/16/2015'
    ,   '07/13/2015'
    ];
    areAllDatesSame(datesArray); // false
    
    var datesArray2 = [
        '07/13/2015'
    ,   '07/13/2015'
    ,   '07/13/2015'
    ,   '07/13/2015'
    ,   '07/13/2015'
    ];
    areAllDatesSame(datesArray2); // true
    

    【讨论】:

    • Moishe Lipsker +1 的努力,我得到了我想要的,还请您更新代码以查找给定日期是否相同?谢谢
    • 您想要一个单独的函数来检查所有日期是否相同或是否相同?
    • Moishe Lisker 单独的函数可以检查所有日期是否相同。
    • Moishe Lisker,如果数组有一个日期,或者如果数组只有一个日期,那么上述方法会失败,有时数组可能有多次相同的日期,或者数组可能只有一个日期
    • 所以你想知道是否至少有一个重复的日期(不仅是当所有日期都相同时)?
    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多