过去日期的日期范围逻辑

时间:2018-11-21 20:22:01

标签: javascript

我有3个日期:PresentStartEnd

当前日期= '11 / 21/2018'(今天的日期)

开始='2015年5月5日'

End = '12 / 4/2019

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

enter image description here

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

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();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

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

感谢您的帮助!谢谢。

2 个答案:

答案 0 :(得分:0)

您只需要将今天的日期(格式)分配给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);
}

答案 1 :(得分:0)

执行以下操作对我有用。我使用开始日期“ 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);