Link to home
Start Free TrialLog in
Avatar of smares323
smares323

asked on

Javascript Server date(); Not new date();

I want to use server date not the new date(); in this script

var oneHour = 60 * 60, // 60 seconds * 60 minutes dynamic variable
    twentyMins = 20 * 60, // 20 minutes * 60 seconds
    thirtyMins = 30 * 60, // 20 minutes * 60 seconds
    oneMin = 60, // 60 seconds
    fiveSecs = 5,
    when = new Date(2014,2,18,8,32,0), // change to the date and time you want to show - months start at 0
    timeToShow=thirtyMins
    link = '<input type="button" value="Get free MCLE Credit" name="MCLE" onclick=\'window.open("index.cfm","_self")\' />';


window.onload = function () {
    var then = new Date(when.getTime());
    then.setMinutes(then.getMinutes()+30);
    var d = new Date();
    if (d.getTime() >= when.getTime() && d.getTime() <then.getTime()) {
      document.getElementById('btnappear').innerHTML=link;
      countDown('btnappear', '', timeToShow);
    }
}

function countDown(elID, output, seconds) {
    var mins,
    secs = seconds,
        pad = function (n) {
            return n > 9 ? n : '0' + n;
        };

    // get the hours by dividing by the number of seconds in an hour
    hours = Math.floor(secs / 3600); //  60 * 60 = 3600
    // get the remaining seconds
    secs %= 3600;
    // likewise, get the number of minutes of by dividing the remaining seconds by 60
    mins = Math.floor(secs / 60);
    // again, get the remainder of seconds
    secs %= 60;

    // pad any numbers less than 9 with a leading 0
    secs = pad(secs);
    mins = pad(mins);
    hours = pad(hours);

    document.getElementById(elID).innerHTML = (seconds === 0) ? output : 'Time link is still active: ' + hours + ':' + mins + ':' + secs +'<br/>'+link;

    // instead of returning, just don't call setTimout if we are done
    if (seconds !== 0) {
        seconds -= 1;
        // there is no need to pass a string to setTimout, you just pass the function name,
        // followed by the timeout in ms, followed by any params
        //setTimeout(countDown, 1000, elID, output, seconds);
        setTimeout("countDown('" + elID + "', '" + output + "', " + (seconds) + ")", 1000);
    }
}
Avatar of Big Monty
Big Monty
Flag of United States of America image

javascript runs on the client side, so will return the date of the client.

To get the date of the server, you would most likely want to use a server side language such as asp.net, php, etc.
Avatar of smares323
smares323

ASKER

That's true client side I noticed that when I was testing the clients clock was set to a different time and the button did not appear on time that it was set. Can I some how use a Server date time I'm running ColdFusion.
change

var d = new Date();

to

var d = new date('<cfoutput>#Now()#</cfoutput>');
#Now()# is outputting this format {ts '2014-04-17 13:15:37'}  and javascript is throwing out an error.
im not a cold fusion guy, but doing a quick search looks like this should work (assuming you just want the date):

var d = new date( '<cfoutput>#dateformat(now(),"dddd, mmmm dd, yyyy")#</cfoutput>' );
I wrote the following code bellow but the script does not like the value from var d, even do it's formatted exactly like the new date(); value. the button does not pop up. only pops up with new date(); My problem is that someone my have the wrong time set on there computer and never see the pop up button.

var cd = "#dateformat(now(),'mm/dd/yyyy')# #TimeFormat(now(),'HH:mm:ss')#";
var jd = cd.split(/\D/);
var d = new Date( jd[2], jd[0]*1-1, jd[1], jd[3], jd[4], jd[5] );
ASKER CERTIFIED SOLUTION
Avatar of _agx_
_agx_
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
great advice