Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    47

    date calcolo ultimo del mese: cosa sbaglio?

    Buongiorno a tutti,

    per stabilire la data di fine mese relativa ad una determinata data utilizzo il seguente metodo:

    var data=new Date(anno,mese,0);
    //anno e mese sono le relative stringhe della data nel form già recuperate
    ultimo_gg=data.getDate();
    var data_new=new Date(anno,mese,ultimo_gg);
    var gior=data_new.getDate();
    var mes=data_new.getMonth();
    var ann=data_new.getFullYear();
    document.nome form.nome campo.value=(ann+\'-\'+mes+\'-\'+gior);

    Probema: per certe date non funziona, se metto qualsiasi data di gennaio 2009 mi restituisce 3/2/2009, febbraio funziona correttamente, marzo restituisce 1/4/2009....e cos' via....

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    il problema sta qui
    var data=new Date(anno,mese,0);
    esempio se metto anno 2009 e mese 1 (febbraio) tu crei una data 2009/1/0
    considera che new Date(2009, 1, 1) è il primo febbraio
    quindi new Date(2009, 1, 0) sarà il 31 gennaio

    ultimo_gg=data.getDate();
    qui estrai il giorno 31

    var data_new=new Date(anno,mese,ultimo_gg);
    qui crei una nuova Date(2009, 1, 31) che, ovvio, non esiste
    ecco perché questa data sarà il 3/2/2009

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    47
    ho risolto grazie alle tue indicazioni, grazie.
    ho semplificato anche il codice ( se serve lo inserisco):

    1) dal form recupero la data (formato stringa)
    var stringa=(document.nome_form.nome_campo.value);
    anno = parseInt(stringa.substr(0, 4),10);
    mese = parseInt(stringa.substr(5, 2),10);
    2) costruisco la data dell'ultimo del mese
    var data=new Date(anno,mese,0);
    ultimo_gg=data.getDate();
    3) recupero il giorno e scrivo nel form la data così ottenuta
    document.nome_form.nome_campo.value=(anno+\'-\'+mese+\'-\'+ultimo_gg);

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    un modo rapido è usare il trucco della data 0
    se viene costruito un Date con giorno 0, lui "porta indietro" la data di un giorno
    ad esempio new Date(2009, 1, 0) crea un 31/01/2009
    new Date(2009, 2, 0) crea un 28/02/2009
    ricorda che i mesi sono 0-11

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    47
    Originariamente inviato da floyd
    se viene costruito un Date con giorno 0, lui "porta indietro" la data di un giorno
    Infatti mi mancava proprio questo passaggio.....


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.