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

    Data odierna compresa tra due date

    Salve a tutti,
    visto che siamo in periodo natalizio (e quindi auguro Buone Feste a tutti) ho pensato di realizzare un funzione js che controlla se la data odierna è compresa tra 8 dicembre e 6 gennaio, mi mostra uno sfondo natalizio. Purtroppo non riesco a farla funzionare.
    codice:
    function bckMainPage(){ //Background di Natale
        var data = new Date();
        var a = data.getDate();
        var b = data.getMonth();
        alert(data);
        if( ("" + a + b) > 711 || ("" + a + b) < 70 ) {
            document.getElementById('mainPageBackground').style.background = "url('./index_file/img/xmas.png')";
        }
    }
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    Salve a tutti,
    visto che siamo in periodo natalizio (e quindi auguro Buone Feste a tutti) ho pensato di realizzare un funzione js che controlla se la data odierna è compresa tra 8 dicembre e 6 gennaio, mi mostra uno sfondo natalizio. Purtroppo non riesco a farla funzionare.
    codice:
    function bckMainPage(){ //Background di Natale
        var data = new Date();
        var a = data.getDate();
        var b = data.getMonth();
        alert(data);
        if( ("" + a + b) > 711 || ("" + a + b) < 70 ) {
            document.getElementById('mainPageBackground').style.background = "url('./index_file/img/xmas.png')";
        }
    }
    Grazie in anticipo
    ciao
    sostituisci opportunamente
    function bckMainPage() {
    var data = "";
    data = datacorr();
    alert("data="+data);
    if ((data > 20151207) && (data < 20160107)) {
    // document.getElementById('mainPageBackground').styl e.background = "url('./index_file/img/xmas.png')";
    alert("sfondo natalizio attivato...");
    }
    }

    function datacorr() {
    var data = new Date();
    var yy=data.getFullYear();
    var mm=data.getMonth() + 1;
    var gg = data.getDate();
    var dataoggi = (yy * 10000) + (mm * 100) + gg;
    // alert("Oggi = " + dataoggi);
    return dataoggi;
    }
    il test effettuato viene fatto convertendo la data del giorno in AAAMMGG che è un numero
    poi le due date le hai e il test deve essere fatto tra le due date comprese...
    quindi maggiore di 20151207 e minore di 20160107 .... ho esposto bene la soluzione?
    ciao
    Vic53

  3. #3
    Grazie mille! Ho risolto

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, rispondo giusto per completezza senza togliere nulla alla risposta che già ti è stata fornita.

    L'oggetto date può essere rappresentato sotto forma di un numero espresso in millisecondi. Questo ti da la possibilità di effettuare le operazioni di confronto direttamente tra due istanze dell'oggetto date (attraverso i suoi metodi), cioè senza bisogno di scomporre le varie componenti.

    Una soluzione più concisa potrebbe quindi essere elaborata in questo modo:
    codice:
    function bckMainPage(){ //Background di Natale
        var adesso = new Date().getTime();
        var da = new Date().setMonth(11,8);
        var a = new Date().setMonth(12,6); // 12 sarebbe 11+1, cioè Gennaio dell'anno prossimo
        if(adesso >= da && adesso <= a ){
            document.getElementById('mainPageBackground').style.background = "url('./index_file/img/xmas.png')";
        }
    }
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, rispondo giusto per completezza senza togliere nulla alla risposta che già ti è stata fornita.

    L'oggetto date può essere rappresentato sotto forma di un numero espresso in millisecondi. Questo ti da la possibilità di effettuare le operazioni di confronto direttamente tra due istanze dell'oggetto date (attraverso i suoi metodi), cioè senza bisogno di scomporre le varie componenti.

    Una soluzione più concisa potrebbe quindi essere elaborata in questo modo:
    codice:
    function bckMainPage(){ //Background di Natale
        var adesso = new Date().getTime();
        var da = new Date().setMonth(11,8);
        var a = new Date().setMonth(12,6); // 12 sarebbe 11+1, cioè Gennaio dell'anno prossimo
        if(adesso >= da && adesso <= a ){
            document.getElementById('mainPageBackground').style.background = "url('./index_file/img/xmas.png')";
        }
    }
    ciao a tutti...
    Ti ringrazio KillerWorm
    che ci sono altri modi per programmare lo sappiamo bene noi che ci lavoriamo nel settore informatico...ma quello che manca sai che cosa è ed è importante?
    una spegazione esauriente del metodo...molto spesso non c'è e se c'è una persona che ti fa vedere la luce spesso possono iniziare correttamente una strada che di per se è interessante ma spesso è faticosa. Se poi c'è la collaborazione, si progredisce perchè spesso quello che non vediamo noi, magari lo vedono gli altri e se non ti avvertono continui magari a fare errori inconsapevoli.
    Va be mi sono dilungato troppo.
    Auguri a tutti di buone feste e di fine anno...
    Vic53

  6. #6
    Salve,
    Grazie KillerWorm per la tua risposta! Volevo chiederti delle spiegazioni sulla prima riga (var adesso): perché fai il confronto con i millisecondi e non sulle date?
    Grazie ancora a tutti
    Ultima modifica di Giovanni255; 22-12-2015 a 21:30

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    perché fai il confronto con i millisecondi e non sulle date?
    Il metodo setMonth() restituisce un numero in millisecondi, per cui ho trovato comodo fare il confronto con i relativi timestamp usando il getTime().
    Ma in effetti, come hai accennato tu stesso, è anche possibile eseguire il confronto direttamente tra due oggetti date.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Ciao,
    ho capito. Mi interessava sapere perché come ha detto giustamente vic53 esistono molti modi di programmare. Comunque grazie a tutti!

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.