Results 1 to 8 of 8

Thread: Javascript's equilvalent of DateDiff Function?

Threaded View

  1. #8
    Addicted Member
    Join Date
    Feb 2010
    Location
    Damascus - Syria
    Posts
    145

    Re: Javascript's equilvalent of DateDiff Function?

    try this function please, return true if the difference is less than a year:

    HTML Code:
    <script type="text/javascript">
        // mm/dd/yyyy
        var validDate = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
        function dateDifference(date1, date2)
        {
            if (validDate.test(date1) && validDate.test(date1)) {
                date1Numbers = date1.split("/");
                date2Numbers = date2.split("/");
                var month1 = date1Numbers[0];
                var month2 = date2Numbers[0];
                var day1 = date1Numbers[1];
                var day2 = date2Numbers[1];
                var yearDif = Math.abs(date1Numbers[2] - date2Numbers[2]);
                if (yearDif <= 1) {
                    if (yearDif == 1) {
                        if (month2 <= month1) {
                            if (month2 == month1) {
                                if (day2 <= day1) {
                                    calculateDiff(date1Numbers, date2Numbers);
                                    return true;
                                } else {
                                    return false;
                                }
                            } else {
                                calculateDiff(date1Numbers, date2Numbers);
                            }
                        } else {
                            return false;
                        }   
                    } else {
                        calculateDiff(date1Numbers, date2Numbers);
                    }
                } else {
                    return false;
                }
            } else {
                return false;
            }  
        }
        
        function calculateDiff(date1Numbers, date2Numbers)
        {
            var resultAsDays = 0;
            var day1 = parseInt(date1Numbers[1]);
            var month1 = parseInt(date1Numbers[0]);
            var year1 = parseInt(date1Numbers[2]);
            var day2 = parseInt(date2Numbers[1]);
            var month2 = parseInt(date2Numbers[0]);
            var year2 = parseInt(date2Numbers[2]);
            
            if (year1 == year2) {
                resultAsDays += (Math.abs(month2 - month1)) * 30;
                resultAsDays -= day1;
            } else {
                if (month1 == month2) {
                    resultAsDays += 330;
                } else {
                    resultAsDays += (12 - (month1 - 1) + month2) * 30;
                    resultAsDays -= day1;
                }
            }
            resultAsDays += day2;
            window.alert(resultAsDays);
        }
        </script>
    
    <input type="text" id="date1" />
    <input type="text" id="date2" />
    
    <input type="button" value="is valid" onclick="window.alert(dateDifference(document.getElementById('date1').value, document.getElementById('date2').value));" />
    hope this to be useful

    please try it, I have tested it on some dates and I think it works good

    regards

    Feras Jobeir
    Last edited by fjober; Aug 27th, 2011 at 02:02 PM.

Posting Permissions

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



Click Here to Expand Forum to Full Width