Advanced Search

Results 1 to 5 of 5

Thread: Quick help with date/time query string from PHP to JS

  1. #1
    Join Date
    Aug 2005
    Location
    Other Side of My Monitor
    Posts
    3,486
    Thanks
    5
    Thanked 105 Times in 104 Posts
    Blog Entries
    1

    Default Quick help with date/time query string from PHP to JS

    I am working with a timer and to work properly it needs to be all in JS (part of a forum coding thing, don't ask - it's frustrating)

    Anyway, the current code is in both JS and a tiny bit of PHP (for getting current server date/time. THe current code is this:

    PHP Code:
    var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s"time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
    I need the exact output that would be given, except all in JS. I just don't know how to do this. Help?

    BLiZZ
    {CWoT - Riddle } {OSTU - Psycho} {Invasion - Team}
    Follow Me on Twitter: @Negative_Chaos
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

  2. #2
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    28,704
    Thanks
    43
    Thanked 3,133 Times in 3,097 Posts
    Blog Entries
    12

    Default

    Howdy Stranger! Welcome Back!

    Well you can't really. The server time would be in whatever timezone the server is in. If that's not suitable, it can be corrected/converted to another zone. If PHP is unavailable, asp, or ssi may be used. If the page has to have a .htm or .html extension and you cannot set the server to process it as server side via .htaccess or other means, the server time can be gotten via an external javascript with the server extension, or even via AJAX.

    If you cannot/will not do any of those, the script itself doesn't really need the server time. It can use the user's computer's time (which could be off or be deliberately set differently to scam you). But at that, there's little point accessing that there, trying to put it into a format that the script will only later convert to a javascript Date Object.

    That is if this is, as it appears to be, DD's Local Time script:

    http://www.dynamicdrive.com/dynamicindex6/localtime.htm

    or some variation on it. If that's the case, the next line is:

    Code:
    this.localtime=this.serverdate=new Date(servertimestring)
    That can be changed to simply:

    Code:
    this.localtime=this.serverdate=new Date()
    and the line in your post can be commented out or removed completely.

    The time you will have at that point is the user's local time, virtually useless for showing them anything other than their own time. If that's all you want to do, or if that's accurate enough for what you need to know in your form, stop here. Unless it's converted to UTC (GMT) and then worked on from there, it will be different for each user depending upon where they're from in the world. To do that make the line that we're keeping be these three lines:

    Code:
    var local = new Date();
    local.setMinutes(local.getMinutes() + local.getTimezoneOffset());
    this.localtime=this.serverdate=new Date(local);
    Unfortunately there's no accounting for DST/ST in this, never was with the original script either though. If the server was GMT, then locations around the globe in DST would be an hour off. If the server was in DST or ST then locations around the globe in the other would be an hour off. Northern to Southern hemisphere conversions could be up to two hours off. The only way to accurately account for DST/ST is to do more of the timezone calculation on the server where I believe it will automatically correct for DST/ST if it knows the zone it's converting from and is given the zone to convert to.

    But you will have UTC time, that might be all you need.

    Without knowing more of what this is for I can't be of much more help.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  3. #3
    Join Date
    Aug 2005
    Location
    Other Side of My Monitor
    Posts
    3,486
    Thanks
    5
    Thanked 105 Times in 104 Posts
    Blog Entries
    1

    Default

    Hey John! I never really left, just don't always log in when I am around

    Anyway, yes it is the countdown script from here. The problem isn't the functionality, the script works great, but being a count down I need it to use the server time so that everyone has the same days, hours, minutes remaining.

    As you know, I run a team game on one of my forums, each round of the game is released about a week or so after the last one has been solved. I edit the timer to count down to the next release date and time so that each team knows exactly when to be online. Since everyone is all over the world, having the script use local time wouldn't work.

    The problem, though is that I went from putting the script in its own page to having it in a block on the forum itself. WOrked fine 2 years ago, but after the updates and reconfiguring, the blocks now only hold HTML/JS - OR - php, but not all of them together.

    You can see the clock and (broken) countdown right here and the exact code I am using for everything is here:

    Code:
    <style style="text/css">
    
    .lcdstyle{ /*Example CSS to create LCD countdown look*/
    color: #EE0000;
    font: bold 14px MS Sans Serif;
    padding: 3px;
    }
    
    .lcdstyle sup{ /*Example CSS to create LCD countdown look*/
    font-size: 80%
    }
    
    </style>
    
    <script type="text/javascript">
    
    /***********************************************
    * Universal Countdown script-  Dynamic Drive (http://www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit http://www.dynamicdrive.com/ for this script and 100s more.
    ***********************************************/
    
    function cdLocalTime(container, servermode, offsetMinutes, targetdate, debugmode){
    if (!document.getElementById || !document.getElementById(container)) return
    this.container=document.getElementById(container)
    var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s", time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
    this.localtime=this.serverdate=new Date(servertimestring)
    this.targetdate=new Date(targetdate)
    this.debugmode=(typeof debugmode!="undefined")? 1 : 0
    this.timesup=false
    this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time
    this.updateTime()
    }
    
    cdLocalTime.prototype.updateTime=function(){
    var thisobj=this
    this.localtime.setSeconds(this.localtime.getSeconds()+1)
    setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
    }
    
    cdLocalTime.prototype.displaycountdown=function(baseunit, functionref){
    this.baseunit=baseunit
    this.formatresults=functionref
    this.showresults()
    }
    
    cdLocalTime.prototype.showresults=function(){
    var thisobj=this
    var debugstring=(this.debugmode)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : ""
    
    var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds
    if (timediff<0){ //if time is up
    this.timesup=true
    this.container.innerHTML=debugstring+this.formatresults()
    return
    }
    var oneMinute=60 //minute unit in seconds
    var oneHour=60*60 //hour unit in seconds
    var oneDay=60*60*24 //day unit in seconds
    var dayfield=Math.floor(timediff/oneDay)
    var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
    var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
    var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
    if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
    hourfield=dayfield*24+hourfield
    dayfield="n/a"
    }
    else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
    minutefield=dayfield*24*60+hourfield*60+minutefield
    dayfield=hourfield="n/a"
    }
    else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
    var secondfield=timediff
    dayfield=hourfield=minutefield="n/a"
    }
    this.container.innerHTML=debugstring+this.formatresults(dayfield, hourfield, minutefield, secondfield)
    setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
    }
    
    /////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////
    
    //Create your own custom format function to pass into cdLocalTime.displaycountdown()
    //Use arguments[0] to access "Days" left
    //Use arguments[1] to access "Hours" left
    //Use arguments[2] to access "Minutes" left
    //Use arguments[3] to access "Seconds" left
    
    //The values of these arguments may change depending on the "baseunit" parameter of cdLocalTime.displaycountdown()
    //For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
    //For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc
    
    //1) Display countdown using plain text
    function formatresults(){
    if (this.timesup==false){//if target date/time not yet met
    var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds </sup> LEFT!</span>"
    }
    else{ //else if target date/time met
    var displaystring="Round Released!"
    }
    return displaystring
    }
    
    //2) Display countdown with a stylish LCD look, and display an alert on target date/time
    function formatresults2(){
    if (this.timesup==false){ //if target date/time not yet met
    var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds </sup> LEFT!</span>"
    }
    else{ //else if target date/time met
    var displaystring="Round Released!" //Don't display any text
    alert("Round Released!") //Instead, perform a custom alert, used to say What Are You Waiting For?!
    }
    return displaystring
    }
    
    </script>
    <title>Invasion O'Clock</title>
    
    
    <font color="#EE0000">
    <center>The Current Local Time is:<br>
    <applet code="Dgclock.class" codebase="http://cleverwasteoftime.com/java-sys" height="30" width="100">
          <param name="TimeFormat" value="">
       <param name="ShowDate" value="yes">
          <param name="ShowFrame" value="yes">
          <param name="fg" value="red">
          <param name="bg" value="black">
          </applet><br>
    
    
    
    
    
    <b>Invasion 5 Round 1 Released:<br>
    April 29th, 2013 at 8 p.m. (GMT)</b>
    
    
    
    <div id="cdcontainer"></div>
    
    <script type="text/javascript">
    //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode")
    //cdLocalTime.displaycountdown("base_unit", formatfunction_reference)
    
    //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page:
    /***********************************************
    * BELOW IS WHERE YOU CHANGE THE TIME AND DATE!
    * IF YOU CAN'T SEE THIS WE HAVE A PROBLEM
    * AND WILL NEED TO GO GET YOUR EYES CHECKED!
    ***********************************************/
    var launchdate=new cdLocalTime("cdcontainer", "server-php", -120, "April 29, 2013 12:00:00")
    launchdate.displaycountdown("days", formatresults)
    </script>
    </center>
    </font>
    The LCD works, the date and time are displayed, but the countdown refuses to count down. When I remove the php time get the countdown shows NAN for each section (as seen if you clicked my link). However it will work just perfect if I take out that php portion:

    PHP Code:
    '<? print date("F d, Y H:i:s"time())?>'
    and put in a manual time. Obviously hard coding a time into the script is not helpful.

    So... what should I do? I know the script is a little old, but if I could fix this part, then all should be well. I am not sure, maybe a rewrite of the entire thing? I just wanted to make the countdown work, with minimal effort.

    Thanks for looking!
    {CWoT - Riddle } {OSTU - Psycho} {Invasion - Team}
    Follow Me on Twitter: @Negative_Chaos
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

  4. #4
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    28,704
    Thanks
    43
    Thanked 3,133 Times in 3,097 Posts
    Blog Entries
    12

    Default

    Oh, my mistake, that's actually the Countdown script:

    http://www.dynamicdrive.com/dynamici...lcountdown.htm

    You could make the script external, call it say - countdown.php, and have it on the page via an external script tag:

    Code:
    <script type="text/javascript" src="countdown.php">
    /***********************************************
    * Universal Countdown script-  Dynamic Drive (http://www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit http://www.dynamicdrive.com/ for this script and 100s more.
    ***********************************************/
    </script>
    Then it should work fine. But since you're only wanting to get everyone in sync, and it would be to no one's advantage to adjust their clock to change the time in the countdown, and most user's clocks are accurate, you could just use the second method shown from my previous post:

    Code:
    var local = new Date();
    local.setMinutes(local.getMinutes() + local.getTimezoneOffset());
    this.localtime=this.serverdate=new Date(local);
    Use that instead of:

    Code:
    var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s", time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
    this.localtime=this.serverdate=new Date(servertimestring)
    Everyone will be working off of UTC time now. Just adjust the LocaltimeoffsetMinutes (from Step 2 on the demo page) until it shows the correct time for you. Once it does it for you, it will for all.
    Last edited by jscheuer1; 04-18-2013 at 10:21 PM. Reason: clarity
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  5. The Following User Says Thank You to jscheuer1 For This Useful Post:

    BLiZZaRD (04-18-2013)

  6. #5
    Join Date
    Aug 2005
    Location
    Other Side of My Monitor
    Posts
    3,486
    Thanks
    5
    Thanked 105 Times in 104 Posts
    Blog Entries
    1

    Default

    That did the trick! It seems to be working for me. I will double check it with the player later. Food calls and I have to go find it for now.

    Thanks John!
    {CWoT - Riddle } {OSTU - Psycho} {Invasion - Team}
    Follow Me on Twitter: @Negative_Chaos
    PHP Code:
    $result mysql_query("SELECT finger FROM hand WHERE id=3");
    echo 
    $result

Similar Threads

  1. Get Google Query string..
    By chetanmadaan in forum PHP
    Replies: 2
    Last Post: 01-19-2012, 09:02 AM
  2. Need some quick PHP date/time help.
    By jlizarraga in forum PHP
    Replies: 1
    Last Post: 08-27-2009, 08:32 AM
  3. Help adding Query String
    By dj30324 in forum PHP
    Replies: 2
    Last Post: 09-02-2008, 08:35 PM
  4. Query String in HTML
    By benslayton in forum Flash
    Replies: 3
    Last Post: 06-16-2007, 01:51 PM
  5. using url like a php query string
    By Agrajag in forum JavaScript
    Replies: 8
    Last Post: 05-27-2006, 06:15 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •