www.webdeveloper.com
Results 1 to 5 of 5

Thread: Days between today and input date (Date Math

  1. #1
    Join Date
    Dec 2013
    Posts
    11

    Days between today and input date (Date Math

    So this is a homework assignment. I'm really bad at JavaScript and need more than just suggestions and hints.

    1. input from a single entry field of a validated date in mm/dd/yyyy format. You only need to validate the date format, not that it is a valid date. The associated output area will display the current date in mm/dd/yyyy format, the date that was input and the number of days between the two dates. Be sure to indicate which date was input and which is the current date.

    2. Will take a validated number from 10-99 from a single entry field. The associated output area will display a random whole number from 1 to a maximum of the number input.
    3. Will take input from two text fields. The associated output area will display the content of both input fields and an indication if the input from field one is a substring of the input from field two.

    This is as far as I've gotten
    Code:
    <script type = "text/javascript">
    
    function checkit() {
    
    	var d1 = document.myform.date1.value.split("/");
    	var yr = d1[2];
    	var mm = d1[1]-1;
    	var dy = d1[0];
    	var OK1 = checkValidDate(yr,mm,dy);
    	if ((yr < 0001|| yr > 9999)) {OK1 = false}
    
    	var d2 = document.myform.date2.value.split("/");
    	var date1 = new Date();
    	var yr = date1.getFullYear();
    	var mm = date1.getMonth();
    	var dy = date1.getDate();
    
    
    	if ((!OK1) || (!OK2)) {
    	alert ("Invalid dates\(s\) or incorrect format!  Please try again.");
    	document.myform.date1.value = "";
    	document.myform.date2.value = "";
    	return false;
    	}
    
    	var firstDate = new Date(d1[2],d1[1]-1,d1[0]); 
    	var secondDate = new Date(d2[2],d2[1]-1,d2[0]);  
    
    	function daysBetween(startDate,stopDate) {
    	var ONE_DAY = 1000 * 60 * 60 * 24;  // The number of milliseconds in one day
    	var dx_ms = startDate.getTime();  // Convert both dates to milliseconds
    	var dy_ms = stopDate.getTime();
    	// Calculate the difference in milliseconds
    	var difference_ms = Math.abs(dy_ms - dx_ms);
    	// Convert back to days and return
    	return Math.round(difference_ms/ONE_DAY);
    	}
    	
    	alert("Days between the two dates is " + daysBetween(firstDate,secondDate));
    }
    
    </script>
    </head>
    
    <body>
    
    <form name = "myform">
    Enter Date DD/MM/YYYY <input type = "text" name = "date1" id = "date1"><br>
    <br><br>
    <input type = "button" value = "Check Date" onclick = "checkit()">
    </form>
    
    </body>
    </html>

  2. #2
    Join Date
    Dec 2005
    Location
    FL
    Posts
    7,350
    Several of observations:

    1. You seem to be subtracting 1 from the month value twice.
    2. You seem to be missing the code for the checkValidDate() function
    3. You are testing an undefined variable: OK2

    Might want to use the error console in the FF or Chrome browsers.

  3. #3
    Join Date
    Mar 2007
    Location
    localhost
    Posts
    2,206
    More observations, you have name = "date1" but no name = "date2" field, you make reference to it in your script.

    Your HTML code should have no spaces between the name and the value in the tags, example <input type = "text" name = "date1" id = "date1"> should be <input type="text" name="date1" id="date1" />

    You should have it value="" for the inputs. It prevents errors in code for example Google Chrome wouldn't run because the form fields had no value="" set and the only other option was to use the getElementbyId method, when I put in the value="" then the more direct reference to the document.myform.date1.value worked.


    This is how I would calculate the number of days between two dates
    Code:
    function tween(start,end) {
    	var start = start.split("/");
    	start.reverse();
    	var startDate = new Date(start[0],start[1]-1,start[2],0,0,0).getTime();
    	
    	var end = end.split("/");
    	end.reverse();
    	var endDate = new Date(end[0],end[1]-1,end[2],0,0,0).getTime();
    	
    	// we know that 86400000 milliseonds exist in a day
    	
    	var days = Math.floor( Math.abs(startDate-endDate)/86400000 );
    	
    	return days;
    	}
    Yes, I know I'm about as subtle as being hit by a bus..(\\.\ Aug08)
    Yep... I say it like I see it, even if it is like a baseball bat in the nutz... (\\.\ Aug08)
    I want to leave this world the same way I came into it, Screaming, Incontinent & No memory!
    I laughed that hard I burst my colostomy bag... (\\.\ May03)
    Life for some is like a car accident... Mine is like a motorway pile up...

    Problems with Vista? :: Getting Cryptic wid it. :: The 'C' word! :: Whois?

  4. #4
    Join Date
    Dec 2013
    Posts
    11
    Is that code copy/paste-able?
    Quote Originally Posted by \\.\ View Post
    More observations, you have name = "date1" but no name = "date2" field, you make reference to it in your script.

    Your HTML code should have no spaces between the name and the value in the tags, example <input type = "text" name = "date1" id = "date1"> should be <input type="text" name="date1" id="date1" />

    You should have it value="" for the inputs. It prevents errors in code for example Google Chrome wouldn't run because the form fields had no value="" set and the only other option was to use the getElementbyId method, when I put in the value="" then the more direct reference to the document.myform.date1.value worked.


    This is how I would calculate the number of days between two dates
    Code:
    function tween(start,end) {
    	var start = start.split("/");
    	start.reverse();
    	var startDate = new Date(start[0],start[1]-1,start[2],0,0,0).getTime();
    	
    	var end = end.split("/");
    	end.reverse();
    	var endDate = new Date(end[0],end[1]-1,end[2],0,0,0).getTime();
    	
    	// we know that 86400000 milliseonds exist in a day
    	
    	var days = Math.floor( Math.abs(startDate-endDate)/86400000 );
    	
    	return days;
    	}

  5. #5
    Join Date
    Mar 2007
    Location
    localhost
    Posts
    2,206
    Quote Originally Posted by 6SIX View Post
    Is that code copy/paste-able?
    Only one way to find out.
    Yes, I know I'm about as subtle as being hit by a bus..(\\.\ Aug08)
    Yep... I say it like I see it, even if it is like a baseball bat in the nutz... (\\.\ Aug08)
    I want to leave this world the same way I came into it, Screaming, Incontinent & No memory!
    I laughed that hard I burst my colostomy bag... (\\.\ May03)
    Life for some is like a car accident... Mine is like a motorway pile up...

    Problems with Vista? :: Getting Cryptic wid it. :: The 'C' word! :: Whois?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles