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

    date e calcolo dei giorni

    Salve a tutti!
    Ho un problema con le date: ho un campo testo e 3 combo (gg,mm,aa). Dovrebbe essere possibile selezionare la data di scadenza dalle combo, e calcolare il numero di giorni che mancano alla tal data (visualizzandolo nel campo testo)oppure inserire nel campo testo il num di giorni e visualizzare la data nelle combo. Come si fa??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    codice:
    function diff_data() {
      var oggi = new Date(); // data ricavata dal client
    
      var gg = parseInt(document.NOMEFORM.gg.options[document.NOMEFORM.gg.selectedIndex].value, 10);
      var mm = parseInt(... ,10);
      var aa = parseInt(... ,10); // anno di 4 cifre
      var scad = new Date(aa,mm-1,gg); // data scadenza
    
      var diff = scad - oggi; // differenza in millisec.
      if(diff<0) {
        alert("errore impostazione parametri");
        return false;
      }
     
      diff /= (1000*3600*24); // differenza in giorni
      ....
      return true;
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3

    ehm....

    scusa ma non ho ben capito..
    a che serve quest'istruzione? Ma soprattutto che fa??

    codice:
     diff /= (1000*3600*24); // differenza in giorni
    thanxs!
    <---- BELLISSIMO!!!

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    hola krakovia,

    questa
    codice:
    diff /= (1000*3600*24);
    sarebbe
    codice:
    diff = diff / (1000*60*60*24);
    diff contiene la differenza in millisecondi e la dividi per 1000 (millisecondi in un secondo) per 60 (secondi in un minuto) per 60 (minuti in un'ora) per 24 (ore al giorno)
    zao zao

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    gli oggetti di tipo Date che crei, esprimono la differenza in millisecondi. Per avere la differenza in giorni devi pertanto fare una conversione:

    - diff(msec)/ 1000 restituisce la differenza in secondo (1 sec = 1000 millisec)

    - diff(sec) / 3600 restituisce la differenza in ore (1 h = 3600 sec)

    - diff(h) / 24 restituisce la differenza in giorni (1 g = 24 h)

    Il tutto si riassume con:

    -diff = diff / (1000 * 3600 * 24)

    che in modo compatto si scrive:

    -diff /= (1000 * 3600 * 24)


    Ciao
    Secan

  6. #6

    grazie!!!

    Solo un'ultima domanda...
    diff torna un valore decimale con almeno 6 numeri dopo la virgola.
    es impostando la data all' 8 luglio 2005 il confronto con oggi ha come risultato 364,488978692 etc... è normale? C'è un modo per farmi tornare il num giorni intero?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    diff = Math.floor(diff / (1000*3600*24));

    questo elimina la parte decimale.

    Nota che se rovesci la differenza, devi invece usare Math.ceil()
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    scusa se sono un po' "gnugnu" ma che significa rovesciare la differenza? l'unica cosa che ho notato è che col metodo floor il risultato dell'esempio di prima è 364 e con ceil 365...
    :maLOL:

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    floor arrotonda in basso (verso i numeri piu` negativi, ceil arrotonda in alto (numeri positivi).

    Fatti un po' di conti e cerca quale e` il migliore.

    tieni presente che la variabile oggi contiene la data/ora del momento in cui avviene lo script, mentre la data costruita e` come se fosse appena passata la mezzanotte di quel giorno.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10

    perfetto!

    Grazie!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.