Date calculation

rss

Posted by Geir Mathisen - Jan 20 ’14 at 10:13

I need to set a default date field value based on another date filed in the form.
To_Date = From_Date + 10 days

Typically I would expect a javascript line something like this:

fd.field('To_Date').value(fd.field('From_Date').value()) + 10;

But this does not work.

Anyone know the correct syntax for doing date calculations in FD?

Thanks

 

  • Dmitry Kozlov
    Dmitry Kozlov
    Admin
    Member for: 5 years 10 months 26 days
    #1 by Dmitry Kozlov Jan 21 ’14 at 07:36

    Hello Geir,

    First, you have to convert string representation of your date to JavaScript object. Please, try the following code:

    fd.field('Start_x0020_Date').change(function() {
    	var startDateText = fd.field('Start_x0020_Date').value();
    	if (startDateText) {
    		var startDate = new Date(Date.parse(startDateText));
    		var endDate = new Date(startDate);
    		endDate.setDate(endDate.getDate() + 10);
    		fd.field('End_x0020_Date').value([endDate.getMonth()+1, 
    			endDate.getDate(), endDate.getFullYear()].join('/'));
    	}
    }); 
    

    Please, note that internal names of my fields are 'Start_x0020_Date' and 'End_x0020_Date', you should replace them with your values.

  • Geir Mathisen
    Geir Mathisen
    Member
    Member for: 5 years 7 months 21 days
    #2 by Geir Mathisen Jan 21 ’14 at 02:54

    [#1]:

    [#1]: Thanks for yet another fast response.
    I have tried to insert your code, with my variables.

    Something goes wrong, which results in the calculated date not bbeing recognized as a date (or numbers).
    Result = "NaN/NaN/NaN"

    It seems to go wrong in this line:

    var startDate = new Date(Date.parse(startDateText));

    alert(startDate); - returns "InvalidDate".

    Any idea what is causing this?


    Thanks again

  • Dmitry
    Dmitry
    Admin
    Member for: 7 years 2 months 8 days
    #3 by Dmitry Jan 22 ’14 at 04:58

    [#2]: What is your date format: mm/dd/yyyy? Do you use Date with Time fields or just Date?

  • Geir Mathisen
    Geir Mathisen
    Member
    Member for: 5 years 7 months 21 days
    #4 by Geir Mathisen Jan 22 ’14 at 07:03

    [#3]: Date fields is date only (no time).

    Date format in Norway is: dd.mm.yyyy

    (I replaced the pad char from "/" to ".")

    Geir

  • Dmitry
    Dmitry
    Admin
    Member for: 7 years 2 months 8 days
    #5 by Dmitry Jan 22 ’14 at 07:19

    [#4]: Could you place alert(startDateText) after this line fo code:

    var startDateText = fd.field('Start_x0020_Date').value();
    
  • Geir Mathisen
    Geir Mathisen
    Member
    Member for: 5 years 7 months 21 days
    #6 by Geir Mathisen Jan 22 ’14 at 08:22

    [#5]: Script:

    var startDateText = fd.field('Fra_x0020_Dato').value();
    alert(startDateText);
    Returns

    02.01.2014 - which is correct

  • Dmitry Kozlov
    Dmitry Kozlov
    Admin
    Member for: 5 years 10 months 26 days
    #7 by Dmitry Kozlov Jan 23 ’14 at 02:58

    [#6]: Parse function doesn't work for your date format (dd.mm.yyyy), please, try the following code instead:

     
    fd.field('Start_x0020_Date').change(function() {
    	var startDateText = fd.field('Start_x0020_Date').value();
    	if (startDateText) {
    		var startDateParts = startDateText.split('.');
    		var startDate = new Date(startDateParts[2], startDateParts[1]-1,
    				startDateParts[0]);
    		var endDate = new Date(startDate);
    		endDate.setDate(endDate.getDate() + 10);
    		fd.field('End_x0020_Date').value([endDate.getDate(), endDate.getMonth()+1,
    				endDate.getFullYear()].join('.'));
    	}
    });
    
  • Geir Mathisen
    Geir Mathisen
    Member
    Member for: 5 years 7 months 21 days
    #8 by Geir Mathisen Jan 23 ’14 at 03:26

    [#7]: That worked perfectly.

    TAHNKS A LOT!

Displaying 1 to 8 of 8 messages