Finns det någon funktion som man hämtar upp tiden på servern istället för att man använder date(); på den lokala maskinen?
Jag vill göra så för att mitt nedräkningsskript skall vara korrekt tid hela tiden. Så att det spelar ingen roll vilket besökar som kommer in och vad just det personen har för tid inställt på sin dator. Någon som vet om det gå?
servertid och inte lokaltid
13 svar · 641 visningar · startad av nordan
Så man måste alltså använda sig av något serverside språk för att få tag på servertiden :l
Går det få ett tickande nedräkning med hjälp av detta måste man inte ladda om sidan varje sekund då? Jag har inte testat skriptet än eftersom jag inte har ASP på min webbserver :r
Nope, du behöver inte ladda om sidan. ASP-delen ger bara ett startvärde som används för att definiera ett datum-objekt (i javascript). Sedan används det helt client-side för att räkna tiden. Det behöver givetvis inte vara just ASP, utan vilket serverside-script som hellst som kan rapportera aktuell tid enligt servern.
Har du tillgång till PHP så borde det bli så här när du hämtar tiden från servern:
var diff=new Date(<?php echo date("Y,m,d,H,i,s") ?>).getTime()-new Date().getTime();
Det verkar funka jättebra det där Tack Jojoxx & Matte
En annan fråga
Om man tittar på denna kod
var diff=new Date(<%=year(Now)%>,[b]<%=month(Now)-1[/b]%>,<%=day(Now)%>,<%=hour(Now)%>,<%=minute(Now)%>,<%=second(Now)%>).getTime()-new Date().getTime();
Så är det -1 på månad, så är det i ett Javascript som jag hitta på jojoxx hemsida också. Varför skriver man in -1 på månad? Vill lära mig varför :) En annan sak man skriver ju inte in -1 om man skriver det i PHP redan klart där eller :q
month() i ASP returnerar månadens nummer utifrån det datum man anger som argument, januari = 1, december = 12. Date-objektet i JavaScript däremot numrerar månaderna från 0-11. Detta gör det enklare om du skall använda det till ett index. Om du exempelvis skapar en array för att ange månadernas namn så börjar arrayen på index 0 (och inte 1).
Jag hajjar inte riktigt det här jag vet inte om det är fel i scriptet eller om det är jag som gör fel :)
För om kl tex är 19.44 på min dator men på servern är den 21.26
Då får jag en sida som säger att servertiden är 18.05 Den drar bort när den skall lägga på skall det inte vara någon slags if satts som kolla om det skall + eller - ?
Jag använder mig inte av asp koden utan av php koden
var diff=new Date(<?php echo date("Y,m,d,H,i,s") ?> ).getTime()-new Date().getTime();
Resultatet i diff är skillnaden mellan serverns tid och klientens tid. Om serverns tid är "mindre" är klientens tid blir resultatet negativt, annars blir resultatet positivt. Sedan används denna differens för att kontinuerligt adderas till klientens klocka och det resulterar i att du hela tiden får veta serverns tid. Någon if-sats behövs inte.
Exakt vad returnerar:
<?php echo date("Y,m,d,H,i,s")?>
för något hos dig, och vad är tid/datum vid det tillfället?
Såhär står det i html koden.
var diff=new Date(2003,12,14,21,45,04 ).getTime()-new Date().getTime();
Jag missade det där med -1. Då kanske det istället borde vara:
<?php echo date("Y,").(date("n")-1).date(",j,H,i,s") ?>
Jojoxx jag missa lite av dina frågor.
Servertiden är denna:
tis dec 16 01:25:17 CET 2003
Lokala datorn: 23:43 den 15/12 2003
Detta retunerar då en "servertid" som är 22:01:21
<?php echo date("Y,").(date("n")-1).date(",j,H,i,s")?>
retunerar detta:
2003,11,16,01,28,38
Ursäkta. Det har smugit sig in ett fel i koden. Det skall ju vara "+diff" och inte "-diff".
var now=new Date(new Date().getTime()+diff);
Ok :)
Jag löste det med att lägga in en flagg som kolla om servertiden var större än den lokala datorns.
så här
var plus = 0;
if(servertid > lokaltid)
{
plus = 1;
}
if(plus == 1)
{
now=new Date(new Date().getTime()+diff);
}
else
{
now=new Date(new Date().getTime()-diff);
}
God Jul