【问题标题】:Getting the In-between dates from a start and end date从开始日期和结束日期获取中间日期
【发布时间】:2021-02-11 16:22:41
【问题描述】:

我最初是通过类似的东西来完成这项工作的

var x = endDay - startDay;

for(//iterate for x)  
{
  if(startMonth = endMonth){
     //Push items to array
  }
}

然后我意识到,如果我从 2021 年 12 月 28 日 -> 2022 年 1 月 4 日中选择一个日期,那是行不通的。

所以我会展示我的代码,但通常这更多是逻辑问题,而不是实际代码不起作用..

  createSpecial(startDate, endDate){

  
    var startValue = startDate.split("/");
    var startDay = startValue[0];
    var startMonth = startValue[1];
    var startYear = startValue[2];
   
    var endValue = endDate.split("/");
    var endDay = endValue[0];
    var endMonth = endValue[1];
    var endYear = endValue[2];


    var diff = parseInt(endDay) - parseInt(startDay);
    let difference: Range[] = [];
    var startdate: string = startDay.toString();
    
    for (let i = 0; i <= diff; i++) {
     
        var x = parseInt(startdate);
        x++;
        var s = startdate.toString();
        s = s.padStart(2, '0');
        startdate = x.toString();
        difference.push({
          day: s,
          month: startMonth,
        });
    }
    
export class range{
  day: string;
  month: string;

}

现在我非常不清楚如何解决这个问题,如何从 startDate 和 endDate 获取一个值以用于迭代并创建其间的范围以供以后使用。

我基本上只需要知道开始和结束之间有多少天,我会弄清楚如何迭代到下个月的后记

编辑:评论指出了另一个问题,它为我回答了这个问题: https://stackoverflow.com/questions/4413590/javascript-get-array-of-dates-between-2-dates#:~:text=Try%20this%2C-,remember,-to%20include%20moment

【问题讨论】:

  • 这能回答你的问题吗? Javascript - get array of dates between 2 dates
  • 哦,我没有设法偶然发现,我相信可能是这样,快速工作抛出了一个答案,如果这最终成为一个多余的问题,则可能关闭
  • 我推荐你npmjs.com/package/dayjs 一个 2kb 的库,用于 javascript/typescript 来操作日期。
  • @Guiditox 这在几周前会很棒,我会努力把它扔掉,看看我是否可以用它来重构我的代码库,谢谢
  • @KaustubhKhare 这确实解决了我的问题,谢谢分享

标签: angular typescript


【解决方案1】:

如果你只需要这2天之间的天数,你可以简单地做:

let t1 = start.getTime()
let t2 = end.getTime()

let numberOfDaysBetween = (t2 - t1) / 86400000

【讨论】:

    【解决方案2】:

    使用Date 类型

    function getDayDiff(a, b) {
        return Math.abs(a.getTime() - b.getTime()) / (1000 * 60 * 60 * 24)/*1d in ms*/;
    }
    getDayDiff(new Date(2020, 0), new Date(2021, 0)); // 366
    

    【讨论】:

      【解决方案3】:

      你可以试试。使用 Date 对象作为日期

      function monthDiff(firstDate, secondDate) {
      let months;
      months = (secondDate.getFullYear() - firstDate.getFullYear()) * 12;
      months -= firstDate.getMonth() + 1;
      months += secondDate.getMonth();
      return months <= 0 ? 0 : months;
      }
      

      【讨论】:

        【解决方案4】:

        为什么不使用 date-fns ? 与时刻不同,它不会爆炸您的尺寸预算。它只是导入您将要使用的函数。

        npm i date-fns@2.16.1 --save
        

        然后

        import { addDays, eachDayOfInterval } from "date-fns";
        let dates = eachDayOfInterval(
              {
                start: new Date(),
                end: addDays(new Date(), 10)
              },
              { step: 1 }
            );
          }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-27
          • 2012-08-19
          • 1970-01-01
          • 2021-09-06
          • 1970-01-01
          相关资源
          最近更新 更多