【问题标题】:Calculate the days before the current days in JavaScript在 JavaScript 中计算当前日期的前几天
【发布时间】:2022-11-03 20:26:20
【问题描述】:

我正在尝试编写一个函数来检查当前日期(采用星期四、星期五、星期一的格式),然后显示该日期及其后面的最后 6 天。例如:

周五、周六、周日、周一、周二、周三、周四

周四、周五、周六、周日、周一、周二、周三

最后一天是当天。希望我或多或少地解释清楚。

我在用MomentJs得到今天,但我没有设法得到比这更远的地方。我正在考虑使用数字等于星期几的数组,但我不知道如何“生成”其他日子。我也想过使用为了循环遍历daysOfWeek数组并记录每个元素,直到它到达当前日期但后来我不知道如何显示前一周的日子,因为它只会显示本周的日子,例如在星期四的情况下:

周一,周二,周三,周四

所以周日,周六,周五会丢失

function dynamicLabels() {
    let daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

    let currentDay = moment().format('dddd')

    if (daysOfWeek.includes(currentDay)) {

    }

    console.log()


} 

我知道代码很简单,但我完全坚持这一点,即使我上面提到的想法也是如此。提前致谢! :)

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    为此,您不需要时刻或任何其他日期操作 - 您所追求的只是重新排序的日期数组。使用直接 js - 只需将一天传递给您的函数 - 在数组中找到它的索引,创建该索引之前和之后的浅表副本并将数组连接在一起。

    请注意,第一个(preDays)实际上是选定日期索引之后的天数数组部分(但这将添加到新数组的开头 - 因此是“preDays”名称)。

    另外——我把星期天设为数组中的第一天——这符合正常的 JS 日期/日期命名约定。

    function dynamicLabels(day) {
        let daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
        const dayIndex = daysOfWeek.indexOf(day);
        const preDays = daysOfWeek.slice(dayIndex+ 1);
        const postDays = daysOfWeek.slice(0,dayIndex+1);
        return preDays.concat(postDays);
        
    } 
    
    console.log(dynamicLabels('Thursday'));
    //["Friday","Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"];
    
    console.log(dynamicLabels('Monday'));
    //["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday"];
    
    console.log(dynamicLabels('Wednesday'));
    //[ "Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday"];

    【讨论】:

      【解决方案2】:

      这个想法是使用时刻.subtract() 函数。

      function dynamicLabels() {
        let daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
      
        let currentDay = moment().format('dddd');
      
        const prevDaysFromNow = [currentDay];
      
        for (let i = 1; i <= 6; ++i) {
          const prevDays = moment().subtract(i, 'day').format('dddd');
          prevDaysFromNow.unshift(prevDays);
        }
        console.log(prevDaysFromNow);
      }
      
      dynamicLabels();
      &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"&gt;&lt;/script&gt;

      希望有帮助,加油!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 2023-01-25
        • 2020-08-22
        • 1970-01-01
        • 2023-01-07
        • 2012-11-30
        相关资源
        最近更新 更多