Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Change Javascript to get time from a specific server

Status
Not open for further replies.

ToeKnee2

Programmer
Jun 8, 2006
21
GB
HI all,

I am using the following javascript to display some world time clocks on a webpage, however, it appears that this script is using the time from the DNS server or the local machine(I'm not entirely sure). What I do know is that the time often changes unpredictably, and I'm sure this is depending on where it is getting the "local" or "server" time from.

What I would like to do is change this script so that I can define which server (by IP address) this script gets the time from.

Is this possible? Can anyone please advise?

Many thanks in advanced.

Code:
var weekdaystxt=["Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"]

function showLocalTime(container, servermode, offsetMinutes, displayversion){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
this.displayversion=displayversion
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.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time
this.updateTime()
this.updateContainer()
}

showLocalTime.prototype.updateTime=function(){
var thisobj=this
this.localtime.setSeconds(this.localtime.getSeconds()+1)
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
}

showLocalTime.prototype.updateContainer=function(){
var thisobj=this
if (this.displayversion=="long")
this.container.innerHTML=this.localtime.toLocaleString()
else{
var hour=this.localtime.getHours()
var minutes=this.localtime.getMinutes()
var seconds=this.localtime.getSeconds()
var ampm=(hour>=12)? "PM" : "AM"
var dayofweek=weekdaystxt[this.localtime.getDay()]
this.container.innerHTML=formatField(hour, 1)+":"+formatField(minutes)+""
}
setTimeout(function(){thisobj.updateContainer()}, 1000) //update container every second
}

function formatField(num, isHour){
if (typeof isHour!="undefined"){ //if this is the hour field
var hour=(num>12)? num-12 : num
return (hour==0)? 12 : hour
}
return (num<=9)? "0"+num : num//if this is minute or sec field
}
 
Your script os trying to create server-side includes and ASP on the local computer, and that doesn't work. Once the page is running client-side scripting, it has no contact with the server.

You might try running the Javascript from the server with
Code:
<script type="text/javascript" runat="server">
since your server allows ASP scripting, and then look through the UTC-related functions in the JS Date() object.

Lee
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top