Skip to main content
r.armont
Known Participant
June 16, 2017
解決済み

Calculate date + 30 days then first of following month

  • June 16, 2017
  • 返信数 3.
  • 2953 ビュー

I have a calculated field in my form that adds 30 days to a date entered into DateofHire. I need the resulting date to be the first of the following month.

Ex:

Using a hire date of 7/1/17 my script results in 7/31/17, I need to calculate it to 8/1/17.

If the hire date is 7/2/17, the script results in 8/1/17, I need the field to go to 9/1/17.

I hope that makes sense. Here's my current script:

// Custom Calculate script for NewDate field

(function () {

    // Get date entered into the DOH field

    var sDate = getField("DateofHire").valueAsString;

    // Convert string to date

    var d = util.scand("mm/dd/yyyy", sDate);

   // Add days to date

    d.setDate(d.getDate() + 30);

    // Populate this field with the result

    if (sDate) {

        event.value = util.printd("mm/dd/yyyy", d);

    } else {

        event.value = "";

    }

})();

このトピックへの返信は締め切られました。
解決に役立った回答 try67

Change this line:

d.setDate(d.getDate() + 30);

To:

d.setDate(d.getDate() + 30);

if (d.getMonth()==11) {

    d.setMonth(0);

    d.setFullYear(d.getFullYear()+1);

} else d.setMonth(d.getMonth()+1);

d.setDate(1);

返信数 3

r.armont
r.armont作成者
Known Participant
April 13, 2018

I know this is late, but thank you try67, that was what I was looking for!!

Joel Geraci
Community Expert
Community Expert
June 16, 2017

I created a Date JavaScript library for just these sorts of things. You can read about it here...

http://practicalpdf.com/the-practicalpdf-date-library-for-adobe-acrobat/

The nextMonth method will allow you to advance the date to the first day of the next month and optionally set it to the first business day of that month assuming a Monday through Friday work week.

Date - Extended Date Object for Adobe Acrobat 

try67
Community Expert
try67Community Expert解決!
Community Expert
June 16, 2017

Change this line:

d.setDate(d.getDate() + 30);

To:

d.setDate(d.getDate() + 30);

if (d.getMonth()==11) {

    d.setMonth(0);

    d.setFullYear(d.getFullYear()+1);

} else d.setMonth(d.getMonth()+1);

d.setDate(1);