user569125
user569125

Reputation: 1463

Javascript date calculation

I have date field,Onclick on date feild,i have to calculate the date with the current date .if entered date is one month older than today date.I have to popup amessage saying date is olderthan 1 month.

Date format is "yyyy-MM-dd".i want to compare with date "1984-03-20" to today date "2011-04-14".it should return number of months.

Any hints on this. Regards,

Chaitu

Upvotes: 4

Views: 11939

Answers (7)

Ollie Edwards
Ollie Edwards

Reputation: 14729

Firstly I would advise you to adjust your requirement to 30 days. This is probably fine for your users and is unambiguous for both you and them. 1 month can be of varying length depending on the time of year.

for solution start with

var millisecond = 1;
var second = 1000;
var minute = second * 60;
var hour = minute * 60;
var day = hour * 24;
var week = day* 7;

then on date entry do this

if (usersDate < new Date().getTime() - 30 * day) {
   //Do popup / whatever
}

Alternatively if you really want to do month based interval then do

var now = new Date();
if (usersDate < now.setMonth(now.getMonth() - 1))) {
 //Do popup / whatever
}

Upvotes: 0

wdm
wdm

Reputation: 7189

This would work. Pass the value of the field to dateString onclick and the code will determine whether the date is older than 1 month or not.

var dateString = '3/26/2011';
var selectDate = new Date(dateString); // convert string to date
var monthOld = new Date();

monthOld.setDate(monthOld.getDate() - 30); // subtract 30 days

if (selectDate < monthOld) {
    alert('older than one month');
}
else alert('ok');

Demo: http://jsfiddle.net/cw4vb/

Upvotes: 0

pivotal developer
pivotal developer

Reputation: 503

You can do something like that:

   <script type="text/javascript">

        function checkdate (){

           var today = new Date()

           var dating = document.getElementById("date").attr("value");

           var new = new Date(dating);

           var diff = today - new;

           var days = Math.round(diff/(1000*60*60*24));

           if (days >= 30){

                alert("more than one month!");
           }
      }

    </script>

    <html><body>
       <input type="text" id="date" onClick="checkdate();"/>
    </html></body>

Upvotes: 0

d-live
d-live

Reputation: 8036

var dt = new Date('02 Jul 2009');
dt.setMonth(dt.getMonth() – 1);

You can read up about js Date object to see what formats it can accept.

A blog about JS Date formats

Upvotes: 0

user319198
user319198

Reputation:

The easiest way to compare dates in javascript is to first convert it to a Date object and then compare these date-objects.

Below you find an object with below function:

dates.inRange (d,start,end)

Returns a boolean or NaN:

    * true if d is between the start and end (inclusive)
    * false if d is before start or after end.
    * NaN if one or more of the dates are illegal.

Upvotes: 2

Amedio
Amedio

Reputation: 895

Maybe this could help to you:

http://www.ozzu.com/programming-forum/javascript-date-comparison-t46552.html

<script language="JavaScript">

var days = 0;
var difference = 0;

Christmas = new Date("December 25, 2005");

today = new Date();

difference = Christmas - today;

days = Math.round(difference/(1000*60*60*24));

</script>

Upvotes: 2

Harry Joy
Harry Joy

Reputation: 59650

See this discussion it has demos for getting date difference in javascript. Also this is a good example: javascript-date-difference-calculation it shows how to get difference in month, in week or in year.

Upvotes: 3

Related Questions