UBB.Dev
Posted By: Raziel Forum Age - 02/10/2006 1:30 PM
Whats wrong with this code?

var startDate = ['08','02','2006'];

// Forum Age
var sta = new Date();
sta.setDate(startDate[0]);
sta.setMonth(startDate[1]-1);
sta.setYear(startDate[2]);
var cur = new Date();
var dif = cur - sta;
var totalMonth = 0;
var totalYear = 0;
var totalDay = Math.floor(dif/(60 * 60 * 24 * 1000)) + 1;
while(totalDay > 365) {
totalDay -= 365;
totalYear++;
}
while(totalDay > 30) {
totalDay -= 30;
totalMonth++;
}
var age = totalDay+' days';
if(totalMonth > 0)
age += ', '+totalMonth+' months';
if(totalYear > 0)
age += ', '+totalYear+' year';
age += '.';
Posted By: Brett Re: Forum Age - 02/14/2006 8:00 AM
The plus 1 on the totalday variable seems to throwing things off by one day. Fundamentally the month/year counts will be off due to the fact that (leap) years and every other month is not 30 days. Correcting this by taking into account such variations into months will be a hefty amount of javascript.


More or less out of boredom I cleaned up the code taking out the while loops
Code
<script type="text/javascript">
<!--
var startDate = ['08','02','2005'];

// Forum Age
var sta = new Date(startDate[2], startDate[1] - 1, startDate[0]);
var dif = (new Date() - sta) / 86400000; // milliseconds in day
var age, display = new Array(0, 0, 0);

// Find Years
if(dif >= 365) {
display[0] = Math.floor(dif / 365);
dif -= (display[0] * 365); // take days off total
}

// Find Months
if(dif >= 30) {
display[1] = Math.floor(dif / 30);
dif -= (display[1] * 30); // take days off total
}

// Find Days
display[2] = Math.floor(dif);

document.writeln(display[2] + " days, " + display[1] + " months, " + display[0] + " years");
-->
</script>
Posted By: Raziel Re: Forum Age - 03/09/2006 3:19 PM
Thanks Brett smile
© UBB.Developers