Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    countdown javascript con ora del server

    Salve a tutti. Ho un countdown in javascript sul sito, che recupera la data di scadenza dal database. Ovviamente come ora di inizio prende quella del computer locale (essendo lo script in javascript, quindi lato client).

    C'è modo di far funzionare il count down tenendo conto della data del server?

    Di seguito incollo il codice dello script:



    codice:
    	
    	<script type='text/javascript'>
    	function countdown()
    	{
    	var_anno=$Anno;
    	var_mese=$Mese;
    	var_giorno=$Giorno;
    	var_ore=00;
    	var_minuti=00;
    	var_secondi=00;
    	data_scandeza= new Date(var_anno,var_mese-1,var_giorno,var_ore,var_minuti,var_secondi);
    	
    	
    	data_oggi= new Date();
    	
    	
    	differenza=(data_scandeza-data_oggi);
    	giorni=parseInt(differenza/86400000);
    	differenza=differenza-(giorni*86400000);
    	ore=parseInt(differenza/3600000);
    	differenza=differenza-(ore*3600000);
    	minuti=parseInt(differenza/60000);
    	differenza=differenza-(minuti*60000);
    	secondi=parseInt(differenza/1000);
    	differenza=differenza-(secondi*1000);
    		if (giorni <= '0' && ore <= '0' && minuti <= '0' && secondi <= '0'){
    				
    		}
    		else{
    			if(giorni=='0'){
    				if(ore=='0' && giorni=='0'){
    					document.getElementById('blocco').innerHTML='<span class=\'numeriScadenza\'>' + minuti + '</span>' +'m '+ '<span class=\'numeriScadenza\'>' + secondi + '</span>' +'s';
    					document.getElementById('testoBlocco').innerHTML='Affrettati! l\'offerta scade tra:';
    					setTimeout('countdown()',1000)				
    				}else{	
    					if(minuti=='0' && ore=='0' && giorni=='0'){
    						document.getElementById('blocco').innerHTML='<span class=\'numeriScadenza\'>' + secondi + '</span>' +'s';
    						document.getElementById('testoBlocco').innerHTML='Affrettati! l\'offerta scade tra:';
    						setTimeout('countdown()',1000)				
    					}else{			
    						document.getElementById('blocco').innerHTML='<span class=\'numeriScadenza\'>' + ore + '</span>' +'h '+ '<span class=\'numeriScadenza\'>' + minuti + '</span>' +'m '+ '<span class=\'numeriScadenza\'>' + secondi + '</span>' +'s';
    						document.getElementById('testoBlocco').innerHTML='Affrettati! l\'offerta scade tra:';
    						setTimeout('countdown()',1000)	
    					}
    				}
    			}else{
    				document.getElementById('blocco').innerHTML='<span class=\'numeriScadenza\'>' + giorni + '</span>' +' giorni '+ '<span class=\'numeriScadenza\'>' + ore + '</span>' +'h '+ '<span class=\'numeriScadenza\'>' + minuti + '</span>' +'m '+ '<span class=\'numeriScadenza\'>' + secondi + '</span>' +'s';
    				document.getElementById('testoBlocco').innerHTML='Affrettati! l\'offerta scade tra:';
    				setTimeout('countdown()',1000)			
    			}		
    		}
    	}
    	</script>
    Resto in attesa di un vs riscontro.

    Grazie in anticipo!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Trasforma

    data_oggi= new Date();


    in

    data_oggi= <?php echo time() ?>;


    ed avrai in data_oggi il timestamp del server al momento dell'esecuzione dello script.

  3. #3
    ciao, grazie per la risposta imemdiata!

    Ho provato, però mi si blocca il countdown ed esce un numero altissimo ai giorni.

    Penso sia un problema di formattazione tra le 2 date. Consigli?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ovviamente tutte queste istruzioni devi adattarle al formato che ti restituisce time()
    codice:
    differenza=(data_scandeza-data_oggi);
    giorni=parseInt(differenza/86400000);
    differenza=differenza-(giorni*86400000);
    ore=parseInt(differenza/3600000);
    differenza=differenza-(ore*3600000);
    minuti=parseInt(differenza/60000);
    differenza=differenza-(minuti*60000);
    secondi=parseInt(differenza/1000);
    differenza=differenza-(secondi*1000);
    time() restituisce il timestamp in stile UNIX, ovvero i millisecondi passati del 1/1/1970
    In particolare o trasformi data_scadenza in un timestamp o trasformi data_oggi nel formato in cui hai data_scadenza.
    Se i due formati non coincidono avrai il problema da te riscontrato.

  5. #5
    Avevo pensato di trasformare data_oggi nello stesso formato di data_scadenza, ma non riesco a capire il formato data del new Date() di javascript. In pratica stampando una variabile che contiene il new date(), ottengo una data con alcuni parametri anche a lettere.

    Potresti darmi qualche dritta in più per trasformare il formato di data_scadenza (parametro java) nello stesso formato di data_oggi (timestamp php)?


    Grazie mille!

  6. #6

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.