Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    differenza date stranezza

    codice:
    var data1 = new Date(document.form.data1.value );
    var data2= new Date(document.form.data2.value );
    
    var diff =   data2 - data1 ; /* differenza in millisecondi */
    diff /= (1000*3600*24); /* differenza in gorni */
    
    //alert(diff);
    
    
    if (diff > 14){
    alert('Il massimo consentito di ricerca sono 14 notti');
    return false;
    }
    Non capisco la seguente:

    facendo una differenza tra il 20/08/2007 e il 24/08/2007 ottengo un valore di diff = 62
    non 4

    perchè ?

  2. #2
    Utente di HTML.it L'avatar di oskaron
    Registrato dal
    Sep 2006
    Messaggi
    344
    ciao, impostala in questo modo e non avrai problemi:

    codice:
    var data1 = 20070820;
    var data2= 20070824;
    
    var diff =   data2 - data1;
    
    alert(diff);
    Per fare questo, in base a come ti arrivano i dati, puoi sostituire i parametri, in modo sporco, assegnando delle variabili a dogni parte della data ad esempio, altro non mi viene in mente sul momento

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    in realtà ho risolto così...


    var temp1 = data1.split(/[/]/);
    var temp2 = data2.split(/[/]/);

    var dataF = new Date(temp1[2], parseInt(temp1[1],10) -1, temp1[0]);
    var dataC = new Date(temp2[2], parseInt(temp2[1],10) -1, temp2[0]);

    diff = (dataF - dataC) / (1000 * 3600 * 24) ;



  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da oskaron
    ciao, impostala in questo modo e non avrai problemi:

    codice:
    var data1 = 20070820;
    var data2= 20070824;
    
    var diff =   data2 - data1;
    
    alert(diff);

    Non puoi usare quel metodo. Se le due date fossero

    var data1 = 20070830;
    var data2= 20070902;

    secondo quell'algoritmo sarebbero passati 72 giorni invece di 3

    Edit
    Se poi le date fossero del tipo

    var data1 = 20071231;
    var data2= 20080101;

    segnerebbe ben 8870 giorni di differenza
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Utente di HTML.it L'avatar di oskaron
    Registrato dal
    Sep 2006
    Messaggi
    344
    Hai ragione è piu complicato di quel che sembra

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    L'oggetto Date, quando creato mediante una stringa, accetta il formato internazionale dd-mm-aaaa altrimenti crea una data con il numero di mesi espresso dal primo gruppo di cifre (gennaio=0), il numero di giorni espresso dal secondo gruppo di cifre e l'anno come indicato dal terzo gruppo di cifre.

    Basta un esempio per rendersi conto di quello che succede:

    var data1 = new Date("20/08/2007");
    alert(data1);

    ovvero venti mesi dopo l'8 gennaio 2007

    Per creare correttamente un oggetto data ti conviene splittare la stringa e usare nell'ordine giusto i gruppi di cifre:

    var cifre = document.form.data1.value.split("/");
    var data1 = new Date(cifre[2], cifre[1]-1, cifre[0]);
    alert(data1);

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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.