【问题标题】:Date range logic for past dates过去日期的日期范围逻辑
【发布时间】:2019-04-24 11:41:11
【问题描述】:

我有 3 个日期:PresentStartEnd

现在日期 = '11/21/2018'(今天的日期)

开始 = '10/5/2015'

结束 = '12/4/2019

我需要使用这些日期创建一个日期范围。

我有以下代码来计算日期范围。

function createLedger(stDate, etDate) {

  if (stDate && etDate) {
    var endOfLeaseDate = moment(etDate, "MM/DD/YYYY");
    var startOfLeaseDate = moment(stDate, "MM/DD/YYYY");
    dateRange(startOfLeaseDate, endOfLeaseDate);
  }
}

function dateRange(stDate, etDate) {
  var dates = [];

  var now = stDate.clone();
  var day = stDate.date();

  while(now.isBefore(etDate)) {
    //deal with variable month end days
    var monthEnd = now.clone().endOf("month");
    if (now.date() < day && day <= monthEnd.date()) { now.date(day); }

    dates.push(now.format("YYYY-MM-DD"));
    now = now.clone().add({ "months" : 1 });
  }
  console.log(dates);
}

function RunLedgerAndPV() {
  var pDate = "11/21/2018" 
  var stDate = "10/5/2015";
  var etDate = "12/4/2019";
  createLedger(stDate, etDate);
}
RunLedgerAndPV();
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"&gt;&lt;/script&gt;

我需要以日期范围从当前日期到结束日期而不是开始日期的方式进行编辑,但范围本身基于开始日期的日期。

感谢任何帮助!谢谢。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您只需将今天的日期(格式化)分配给 pDate。

    function RunLedgerAndPV() {
        var now = new Date();
        var nowMonth = ("0" + now.getMonth()).slice(-2);
        var nowDate  = ("0" + now.getDate()).slice(-2);
        var nowYear  = now.getFullYear();
    
        // "11/21/2018"
        var pDate =  nowMonth + '/' + nowDate + '/' + nowYear;
        console.log(pDate);
    
        var stDate = "10/5/2015";
        var etDate = "12/4/2019";
        createLedger(pDate, etDate);
    }
    

    【讨论】:

      【解决方案2】:

      执行以下操作对我有用。我使用 start 'day' 创建了一个新日期并显示了月份和年份,并使用该日期创建了一个数组。

                  var pastDT = stDate.getUTCDate();
                  var pastMT = pDate.getUTCMonth()+2;
                  var pastYR = pDT.getUTCFullYear();
                  var LedgerDT = pastMT + '/' + pastDT + '/' + pastYR;
      
                  var pastStart = presentDate > startDate;
      
                  if (startDate && pastStart){
                      var stDate = moment.utc(new Date(LedgerDT)).format("MM/DD/YYYY");
                  }
      
                  else if (startDate && !pastStart)
                      var stDate = moment.utc(new Date(presentDate)).format("MM/DD/YYYY");
      
                  var etDate = moment.utc(new Date(endDate)).format("MM/DD/YYYY");
                  createLedger(stDate, etDate);
      

      【讨论】:

        猜你喜欢
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-22
        • 1970-01-01
        相关资源
        最近更新 更多