Page 1 of 1

days from an event

Posted: Wed Jul 25, 2012 3:21 pm
by Vegan

Code: Select all

var oldevent = new date(2012, 7, 2);
var today = new date;
document.write(today-oldevent);
I am expecting days so any problems with this approach?

Re: days from an event

Posted: Wed Jul 25, 2012 6:06 pm
by califdon
Take a look at http://www.adp-gmbh.ch/web/js/date/add_days.html

Oops, this one is closer to what you want to do: http://www.javascriptkit.com/javatutors ... ence.shtml

Unlike Microsoft, Linux/Unix datetime variables store the number of milliseconds, not the number of days.

Re: days from an event

Posted: Thu Jul 26, 2012 8:12 pm
by Vegan
I guess I need to use a more conservative approach

Code: Select all

<script type="text/javascript">

//Set the two dates
var millennium =new Date(2000, 0, 1) //Month is 0-11 in JavaScript
today=new Date()
//Get 1 day in milliseconds
var one_day=1000*60*60*24

//Calculate difference btw the two dates, and convert to days
document.write(Math.ceil((today.getTime()-millennium.getTime())/(one_day))+
" days has gone by since the millennium!")

</script>

Re: days from an event

Posted: Thu Jul 26, 2012 8:14 pm
by Vegan
do I need to check to see if that function will work all the time, such as detect the OS in use?

Re: days from an event

Posted: Thu Jul 26, 2012 9:04 pm
by califdon
Vegan wrote:I guess I need to use a more conservative approach

Code: Select all

<script type="text/javascript">

//Set the two dates
var millennium =new Date(2000, 0, 1) //Month is 0-11 in JavaScript
today=new Date()
//Get 1 day in milliseconds
var one_day=1000*60*60*24

//Calculate difference btw the two dates, and convert to days
document.write(Math.ceil((today.getTime()-millennium.getTime())/(one_day))+
" days has gone by since the millennium!")
</script>
Are you sure you want to use Math.ceil? That rounds upward.

I did it this way, which seems to work:

Code: Select all

<script type='text/javascript'>
   var millennium = new Date(2000, 0, 1);
   var today = new Date();
   var difference_ms = today - millennium;
   var ms_in_a_day = 1000 * 60 * 60 * 24;
   var difference_days = Math.round(difference_ms / ms_in_a_day);
   document.write("Today is "+ difference_days + " days after the millennium.");
</script>
You might want to wrap it in a function, as in this example:
http://www.mcfedries.com/javascript/daysbetween.asp
do I need to check to see if that function will work all the time, such as detect the OS in use?
No, Javascript should work the same, regardless of what OS the browser is running in. If your algorithm is correct, it will work.