【问题标题】:Framing a logic for getting the week number using spfx react使用 spfx react 构建获取周数的逻辑
【发布时间】:2022-12-09 22:16:18
【问题描述】:

我有以下用 react-spfx 编写的代码:

private weekNumber(){
const months = \["January","February","March","April","May","June","July","August","September","October","November","December"\];
var currentWeek = (document.getElementById('myweek') as HTMLInputElement).value;
var currentDate = new Date(currentWeek);
var fullYear = new Date(currentDate.getFullYear(),0,1);
var myMonth = months\[currentDate.getMonth()\];
date = currentWeek;
var givenDate = currentDate.getDate();
var givenDay = currentDate.getDay();
var weekNo = //require this logic to be framed
//......

monthWeekNo = myMonths + "- Week No. " + weekNo;
}

Example calender

例如,如果我从日历中选择 12 月 6 日,所需的输出即 monthWeekNo 应该显示 December-Week No. 2

Calender reference-1

考虑一下这个日历。我以星期五为参考,并以此为基础,根据我选择的日期来分配一周。例如,在给定的日历图片中,您可以看到 12 月 2 日是第一周,因为它是星期五。那么在这种情况下,从 11 月 28 日(星期一)到 12 月 4 日(星期日)的所有日期都应该落在 12 月的第一周,例如,如果我选择 2022 年 11 月 29 日,那么 monthWeekNo 的输出应该显示“December- Week No . 1”。

Calender reference-2

假设对于这个日历,我选择了 2023 年 1 月 1 日,即我的 monthWeekNo 输出。应显示“December- Week No. 5”。这是因为在这种情况下,12 月 30 日星期五是参考,并且从 2022 年 12 月 26 日星期一到 23 年 1 月 1 日星期日的所有日期都在 12 月的第 5 周。

有人可以集思广益并为此提供解决方案吗?

【问题讨论】:

    标签: javascript reactjs typescript react-native spfx


    【解决方案1】:

    这是一个返回给定 dateMonthlyWeekNumber 的函数:

    // Get first mondy of the month (as date)
    const getFirstMonday = (date: Date): Date => {
      const day: Date = new Date(date);
      for(day.setDate(1); day.getDay() !== 1; day.setDate(day.getDate() + 1));
      return day;
    }
    
    // Get month's week number (as number)
    const getWeekNo = (date: Date): Number => {
      const firstMondy: Date = getFirstMonday(date);
      return Math.ceil((date.getDate() - firstMondy.getDate()) / 7) + 1;
    };
    
    const currentDate: Date = new Date();
    console.log(getWeekNo(currentDate));
    

    code snippet 的 JS 版本:

    // Get first mondy of the month (as date)
    const getFirstMonday = date => {
      const day = new Date(date);
      for(day.setDate(1); day.getDay() !== 1; day.setDate(day.getDate() + 1));
      return day;
    }
    
    // Get month's week number (as number)
    const getWeekNo = date => {
      const firstMondy = getFirstMonday(date);
      return Math.ceil((date.getDate() - firstMondy.getDate()) / 7) + 1;
    };
    
    const currentDate = new Date();
    console.log(getWeekNo(currentDate));

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多