chad
chad

Reputation: 1

Using answers from prompt for a calculation

Total newbie at JavaScript.

I would like to calculate how many days one has been alive by asking the user their date of birth via prompts/alerts, then obviously subtracting their date of birth from today's date.

I've made a bit of a start...

var month=prompt("Please enter month of birth"," "); 
var day=prompt("Please enter day of birth"," "); 
var year=prompt("Please enter your year of birth"," ");

var curdate = this is the bit i need help with 
var birth = this is the bit i need help with

var milliDay = 1000 * 60 * 60 * 24; // a day in milliseconds;

var ageInDays = (curdate - birth) / milliDay;

document.write("You have been alive for: " + ageInDays);

Any advice or help would be much appreciated.

Upvotes: 0

Views: 1595

Answers (4)

Some Guy
Some Guy

Reputation: 16210

end = Date.now(); // Get current time in milliseconds from 1 Jan 1970
var date = 20; //Date you got from the user
var month = 8-1; // Month, subtracted by one because month starts from 0 according to JS
var year = 1996; // Year
//Set date to the old time
obj = new Date();
obj.setDate(date);
obj.setMonth(month);
obj.setYear(year);
obj = obj.getTime(); //Get old time in milliseconds from Jan 1 1970
document.write((end-obj)/(1000*60*60*24));

Simply subtract current time from Jan 1 1970 in milliseconds from their birthdate's time from Jan 1 1970 in milliseconds. Then convert it to days. Look at MDN's Docs for more info.

See JSFiddle for a working example. Try entering yesterday's date. It should show 1 day.

Upvotes: 1

Tim Rogers
Tim Rogers

Reputation: 21723

var curDate = new Date();

gives you the current date.

var birthdate = new Date(year, month-1, day);

gives you a Date from the separate variables. NB the month is zero-based.

Upvotes: 2

slaphappy
slaphappy

Reputation: 6999

You need to use the Date object (MDN). They can be created from a month, a day, and a year, and added/subtracted.

Typically :

var curDate = new Date();
var birth = new Date(year, month, day);

var ageInDays = (curdate.getTime() - birth.getTime()) / milliDay;

Be aware of the fact that months starts at 0, e.g. January is 0.

Upvotes: 2

Sleeperson
Sleeperson

Reputation: 612

Read some of this: http://www.w3schools.com/js/js_obj_date.asp

Upvotes: 0

Related Questions