Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema formato data

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    20

    Problema formato data

    Dunque... ho aperto un nuovo topic perchè il problema è diverso da quello che avevo prima e che mi avete aiutato già a risolvere

    Il problema adesso è che la funzione per il controllo sulla data (che per inciso non ho scritto io ma l'ho trovata da qualche parte ) mi controlla una data inserita in questo modo: GG/MM/AAAA

    mentre io ho bisogno che la data sia inviata al database nel modo AAAA/MM/GG perchè lui la vuole così...

    Ho provato a correggere la funzione ma non mi funziona

    La funzione che ho io è questa:


    _____________________________________

    function verificadata()

    {

    var dataverifica;
    var dataoutput;

    var gginput;
    var mminput;
    var aaaainput;

    var ggoutput;
    var mmoutput;
    var aaaaoutput;


    var datainput=document.getElementById("txtdata").value ;


    if (datainput=="")
    {
    alert ('Immettere una data');
    return (false);
    }


    if (datainput.length!=10)
    {
    alert ('La data deve essere in formato GG/MM/AAAA');
    return (false);
    }


    gginput=datainput.substr(0,2);
    mminput=datainput.substr(3,2);
    aaaainput=datainput.substr(6,4);


    if(!(numerico(gginput)))
    {
    alert ('Il giorno inserito non è in formato numerico');
    return (false);
    }

    if(!(numerico(mminput)))
    {
    alert ('Il mese inserito non è in formato numerico');
    return (false);
    }

    if(!(numerico(aaaainput)))
    {
    alert ('L`anno inserito non è in formato numerico');
    return (false);
    }

    dataverifica =new Date(aaaainput,mminput-1,gginput)


    dalla data creata viene ricavato l'anno, il mese ed il giorno (il mese è incrementato
    di 1 per restituire il mese nel formato standard)


    aaaaoutput=dataverifica.getFullYear().toString();
    mmoutput=(dataverifica.getMonth()+1).toString();
    ggoutput=dataverifica.getDate().toString();


    if (mmoutput.length<2)
    mmoutput="0"+mmoutput;

    if (ggoutput.length<2)
    ggoutput="0"+ggoutput;


    dataoutput=ggoutput+"/"+mmoutput+"/"+aaaaoutput;


    if (datainput!=dataoutput) {
    alert('La data inserita non è corretta');
    return (false);
    }

    else {
    return (true);
    }
    }

    _______________________________________

    Io avrei provato a cambiare la parte:

    gginput=datainput.substr(0,2);
    mminput=datainput.substr(3,2);
    aaaainput=datainput.substr(6,4);

    in

    aaaainput=datainput.substr(0,4);
    mminput=datainput.substr(5,2);
    gginput=datainput.substr(8,2);

    e anche:

    dataoutput=ggoutput+"/"+mmoutput+"/"+aaaaoutput;

    in

    dataoutput=aaaaoutput+"/"+mmoutput+"/"+ggoutput;


    ma con queste modifiche, quando vado a inserire una data del tipo 2005/12/12 mi dice che il mese non è in formato numerico... ho sicuramente sbagliato/dimenticato qualcosa ma non riesco a capire cosa

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    manca la trasformazione in intero di anno, mese e giorno, ad es.
    gginput = parseInt(gginput, 10)


    se posso suggerisco la libreria che ho in firma (hdate)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    aaaainput=datainput.substr(0,4);
    mminput=datainput.substr(5,2);
    gginput=datainput.substr(8,2);

    in

    aaaainput=datainput.substr(0,5);
    mminput=datainput.substr(5,8);
    gginput=datainput.substr(8,10);

    il 2° numero e' dove si deve fermare nn la lunghezza sarebbe dal 5° carattere compreso al 8° NON compreso

    *edit*

    ops mi sono confuso con il substring
    W magica ROMA!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    20
    non mi funziona nemmeno ora...

    ho messo

    aaaainput=datainput.substr(0,4); //0, 1, 2, 3 occupati, 4 no
    mminput=datainput.substr(5,7); //5, 6 occupati, 7 no
    gginput=datainput.substr(8,10); // 8, 9 occupati, 10 no

    tuttavia mi restituisce sempre che il mese non è in formato numerico scrivendo la data come aaaa/mm/gg...

    io avevo considerato che il secondo numero fosse la lunghezza perchè con il controllo predefinito che avevo preso, e cioè:

    gginput=datainput.substr(0,2);
    mminput=datainput.substr(3,2);
    aaaainput=datainput.substr(6,4);

    con formato data gg/mm/aaaa mi funzionava...

    per la trasformazione della data in numero intero all'inizio è definita questa funzione che mi sono scordato di copiare:

    --------------------

    function numerico(stringain)

    {

    var stringaout;
    var carattere;

    for (i=0;i<stringain.length;i++)

    {
    carattere=stringain.charAt(i);

    if (parseInt(carattere)!=carattere)
    return false;
    }

    return true;

    }

    ------------

  5. #5
    emm come avevo detto nell'edit avevo sbagliato.... il substr nn l'ho mai usato ma il substring funziona come ho detto io...

    cmq fai cosi' mettiti un allert e vedi che ti stampa ogni variabile singolarmente
    W magica ROMA!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    20
    adesso mi funziona!

    ho messo

    aaaainput=datainput.substr(0,4);
    mminput=datainput.substr(5,2);
    gginput=datainput.substr(8,2);

    considerando come lunghezza il secondo numero... è praticamente come l'avevo modificato prima... forse ho pasticciato con gli aggiornamenti vari che dovevo fare col browser e magari non mi aveva considerato il documento aggiornato... scusate per il disturbo ragazzi, errore mio

    e grazie per la disponibilità ^^

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.