Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [as2] - Calcolare intervallo fra date

    Ciao a tutti ho un piccolo dilemma!
    E' possibile calcolare il numero di notti in un intervallo tra date (le date le passo tramile il componente data field) direttamente con AS senza usare PHP o altro?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao.
    Sì, è sicuramente possibile ed è anche abbastanza semplice.

    Il nostro amico Flash ci permette di eseguire direttamente la differenza tra i valori delle due date. Otterrai un valore in millisecondi che potrai utilizzare per calcolarti il numero di giorni nell'intervallo (o di notti se sei nottambulo).

    Ad esempio, metti caso che hai due istanze di DateField sul tuo stage, che si chiamano rispettivamente da_data e a_data.
    Ti basterà un semplice script del genere:

    Codice PHP:
    // applico il listener che mi cattura l'evento "change" per i due DateField
    da_data.addEventListener("change",elabora_intervallo);
    a_data.addEventListener("change",elabora_intervallo);

    function 
    elabora_intervallo():Void {
        
        
    // se le date sono selezionate entrambe 
        
    if (da_data.selectedDate && a_data.selectedDate) {
            
            
    // recupero i valori delle due date
            
    var data_inizio:Number da_data.selectedDate;
            var 
    data_fine:Number a_data.selectedDate;
            
            
    // calcolo i giorni nell'intervallo
            
    var intervallo_giorni:Number Math.abs(data_fine-data_inizio)/86400000;
            
            
    // NOTA:
            // eseguendo la differenza delle due date si ottiene un numero in millisecondi
            // quindi, per ottenere il valore in giorni, va diviso per 86400000
            // (che sono esattamente i millisecondi presenti in 24 ore)
            
            
    trace(intervallo_giorni);
        }

    intervallo_giorni ti restituirà il valore in giorni.
    Tieni presente che non ho inserito alcun controllo per la corretta selezione delle date, per cui sarebbe possibile ottenere un valore negativo se la data di inizio fosse "maggiore" di quella finale. Per questo motivo ho utilizzato la funzione Math.abs con cui si ottiene un valore assoluto.

    86400000 non è un numero preso a caso ma semplicemente, per ottenerlo, ho moltiplicato 1000 ms x 3600 s x 24 h, cioè i millisecondi presenti in un giorno.
    Installa Forum HTML.it Toolset per una fruizione ottimale 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.