Calcolo della durata tra due date di anni diversi<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto utilizzando lo scripting JSL per eseguire uno dei miei report in grado di calcolare la durata tra due date. Il mio report ha una data di inizio nella colonna "A" e una data di fine nella colonna "E", desidero calcolare quanto segue:
1. Durata tra questi due giorni esclusi i fine settimana
2, Durata tra questi due giorni, la data di inizio è il 31/10/2012 e la data di fine è il 20/02/2013, e quando ho utilizzato la forumla "Formula(Day(:E - :A))", ottengo un valore di 10, invece di qualcosa di più grande. La data di inizio è nel 2012 e la data di fine è nel 2013, quindi devo apportare modifiche al mio script? Le altre durate che cadono nello stesso anno vengono calcolate correttamente utilizzando la stessa formula... ma le date che cadono in anni diversi non vengono calcolate accuratamente.
qualcuno può aiutarmi con le due domande?
Grazie,
Ri: Calcolo della durata tra due date di anni diversiSì, ha funzionato...grazie mille!!
Ri: Calcolo della durata tra due date di anni diversiOk, penso di aver capito il problema. Apparentemente JMP non segue lo standard ISO 8601 (ovvero il primo giorno della settimana è lunedì) ma la tradizione statunitense di celebrare la domenica come primo giorno della settimana. Questo spiega perfettamente i tuoi risultati sopra poiché la mia formula presuppone il primo. Tuttavia, è banale adattare la formula per tenerne conto (o qualsiasi altra definizione locale del giorno della settimana o dei giorni considerati appartenenti al fine settimana).
Prova ad esempio questo:
Tentativo ( Somma ( 1 < Giorno della settimana ( Indice ( : UN , : E , 86400 ) ) <= 6 ) - 1 )
Di seguito è riportato il risultato del mio test e sembra funzionare. Il "contatore" si ferma durante i fine settimana (sabato-domenica dove vivo). Rimuovi il segno -1 se con "durata tra due date" intendi includere l'intera durata sia della data di inizio che di quella di fine. (Qui A = oggi, E = giorni futuri)
| UN | E | Giorno feriale | Giorni lavorativi |
| 2013-04-05 | 2013-04-05 | Venerdì | 0 |
| 2013-04-05 | 2013-04-06 | Sabato | 0 |
| 2013-04-05 | 2013-04-07 | Domenica | 0 |
| 2013-04-05 | 2013-04-08 | Lunedi | 1 |
| 2013-04-05 | 2013-04-09 | Martedì | 2 |
| 2013-04-05 | 2013-04-10 | Mercoledì | 3 |
| 2013-04-05 | 2013-04-11 | Giovedì | 4 |
| 2013-04-05 | 2013-04-12 | Venerdì | 5 |
| 2013-04-05 | 2013-04-13 | Sabato | 5 |
| 2013-04-05 | 2013-04-14 | Domenica | 5 |
| 2013-04-05 | 2013-04-15 | Lunedi | 6 |
| 2013-04-05 | 2013-04-16 | Martedì | 7 |
| 2013-04-05 | 2013-04-17 | Mercoledì | 8 |
| 2013-04-05 | 2013-04-18 | Giovedì | 9 |
| 2013-04-05 | 2013-04-19 | Venerdì | 10 |
| 2013-04-05 | 20/04/2013 | Sabato | 10 |
| 2013-04-05 | 2014-04-21 | Lunedi | 271 |
| 2013-04-05 | 22-04-2015 | Mercoledì | 533 |
Re: Calcolo della durata tra due date di anni diversiI dati sono numerici continui, formato data... e voglio calcolare il numero di giorni feriali esclusi i fine settimana... dati di esempio: -
| Data di inizio pianificata | Nuova data di completamento dell'attività |
| 1/3/2013 | 1/3/2013 |
| 1/3/2013 | 4/1/2013 |
| 8/1/2013 | 8/1/2013 |
| 8/1/2013 | 8/1/2013 |
| 9/1/2013 | 9/1/2013 |
| 9/1/2013 | 9/1/2013 |
| 9/1/2013 | 11/01/2013 |
| 9/1/2013 | 9/1/2013 |
| 9/1/2013 | 10/01/2013 |
| 9/1/2013 | 9/1/2013 |
| 10/01/2013 | 11/01/2013 |
| 10/01/2013 | 11/01/2013 |
Re: Calcolo della durata tra due date di anni diversiHo provato la tua formula... funziona per poche celle... guarda i miei dati qui sotto... usando la tua formula... le righe 1 e 2 sono in contraddizione...
| Data di inizio pianificata | Nuova data di completamento dell'attività | SM |
| 1/3/2013 | 1/3/2013 | 0 |
| 1/3/2013 | 4/1/2013 | 0 |
| 8/1/2013 | 8/1/2013 | 0 |
| 8/1/2013 | 8/1/2013 | 0 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 11/01/2013 | 1 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 10/01/2013 | 1 |
| 9/1/2013 | 9/1/2013 | 0 |
| 10/01/2013 | 11/01/2013 | 0 |
| 10/01/2013 | 11/01/2013 | 0 |
| 1/2/2013 | 1/2/2013 | 0 |
| 1/2/2013 | 8/1/2013 | 4 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 7/1/2013 | 1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 8/1/2013 | 2 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 7/1/2013 | 1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 8/1/2013 | 2 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 7/1/2013 | 1 |
| 7/1/2013 | 8/1/2013 | 1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 4/1/2013 | 4/1/2013 | -1 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 9/1/2013 | 2 |
| 10/01/2013 | 10/01/2013 | 0 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 8/1/2013 | 1 |
| 8/1/2013 | 9/1/2013 | 1 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 8/1/2013 | 1 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 7/1/2013 | 0 |
| 7/1/2013 | 8/1/2013 | 1 |
| 8/1/2013 | 8/1/2013 | 0 |
| 8/1/2013 | 8/1/2013 | 0 |
| 8/1/2013 | 9/1/2013 | 1 |
| 9/1/2013 | 16/01/2013 | 5 |
| 16/01/2013 | 22/01/2013 | 4 |
| 8/1/2013 | 8/1/2013 | 0 |
| 8/1/2013 | 8/1/2013 | 0 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 10/01/2013 | 1 |
| 10/01/2013 | 10/01/2013 | 0 |
| 15/01/2013 | 15/01/2013 | 0 |
| 15/01/2013 | 16/01/2013 | 1 |
| 15/01/2013 | 16/01/2013 | 1 |
| 18/01/2013 | 19/02/2013 | 22 |
| 19/02/2013 | 19/02/2013 | 0 |
| 15/01/2013 | 15/01/2013 | 0 |
| 15/01/2013 | 16/01/2013 | 1 |
| 16/01/2013 | 18/01/2013 | 1 |
| 15/01/2013 | 15/01/2013 | 0 |
| 15/01/2013 | 16/01/2013 | 1 |
| 16/01/2013 | 18/01/2013 | 1 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 9/1/2013 | 0 |
| 9/1/2013 | 10/01/2013 | 1 |
| 10/01/2013 | 10/01/2013 | 0 |
| 10/01/2013 | 10/01/2013 | 0 |
| 10/01/2013 | 10/01/2013 | 0 |
| 10/01/2013 | 10/01/2013 | 0 |
| 10/01/2013 | 10/01/2013 | 0 |
| 10/01/2013 | 11/01/2013 | 0 |
| 10/01/2013 | 10/01/2013 | 0 |
| 16/01/2013 | 29/01/2013 | 9 |
| 16/01/2013 | 29/01/2013 | 9 |
| 29/01/2013 | 2/1/2013 | 2 |
| 11/01/2013 | 11/01/2013 | -1 |
| 11/01/2013 | 11/01/2013 | -1 |
| 11/01/2013 | 11/01/2013 | -1 |
| 11/01/2013 | 14/01/2013 | 1 |
Re: Calcolo della durata tra due date di anni diversiHai mai provato la formula nella mia risposta? Doveva escludere i giorni feriali e per me funziona se le colonne sono in formato data (non stringhe).
Ri: Calcolo della durata tra due date di anni diversiQuesto calcolo è identico all'utilizzo della differenza di data... ma include anche i fine settimana... esiste un modo per calcolare SOLO i giorni feriali?
Ri: Calcolo della durata tra due date di anni diversiFunziona, ma non voglio includere i fine settimana nei miei calcoli. Esiste un modo per calcolare solo i giorni feriali?
Re: Calcolo della durata tra due date di anni diversiSe le colonne della data di inizio e di fine sono Continuo, Numerico, Formato data; quindi la formula per la durata tra le due colonne in giorni potrebbe essere qualcosa del tipo: Differenza di data(:Data di inizio, :Data di fine, "giorno")
Se le colonne della data sono composte da caratteri, puoi analizzare il testo come ha fatto PMroz sopra con:
Differenza di data (
informat(:Data inizio, "m/g/a"),
informat(:Data di fine, "m/g/a"),
"giorno")
Ri: Calcolo della durata tra due date di anni diversiQuesto ti darà il tempo trascorso in giorni.
Innanzitutto, aggiungi una nuova variabile/colonna numerica.
Nella finestra Editor delle formule, seleziona la prima data, fai clic su sottrai, seleziona la seconda data, quindi dividi per, seleziona la funzione Data e ora, in giorni, inserisci 1 tra parentesi, fai clic su Applica.
(:diagnosis_date - :dob_date) / In giorni( 1 )
Re: Calcolo della durata tra due date di anni diversiChe ne dici di utilizzare le informazioni sulla colonna e specificare le colonne Data di inizio e Data di fine con Tipo di dati = Numerico, Tipo di modellazione = Continuo, Formato=Data=m/g/a, Formato di input=Data=m/g/a. Quindi aggiungi una colonna aggiuntiva e utilizzando la Formula colonna specifica Data di fine-Data di inizio e scegli anche Formato Durata:giorno:ora:min
Re: Calcolo della durata tra due date di anni diversipuoi renderlo più generale? Spiegherò chiaramente i miei dati.. Ho una colonna "Data di inizio" con il formato Data (mm/gg/aaaa) e un'altra colonna "Data di fine" con il formato mm/gg/aaaa. Voglio sottrarre la data di inizio dalla Data di fine, la mia data è
Data di inizio Data di fine
31/10/2012 31/03/2013
15/09/2012 13/02/2013
15/08/2012 29/01/2013
Ora voglio sottrarre Data di fine - Data di inizio per ottenere il valore in giorni
poiché la data di inizio è nel 2012 e le date di fine sono nel 2013, non ottengo il valore corretto se dico semplicemente: Data di fine -: Data di inizio
Re: Calcolo della durata tra due date di anni diversi1. Questa formula di colonna dovrebbe indicare il numero di giorni lavorativi tra i due giorni:
Tentativo ( Somma ( Giorno della settimana ( Indice ( : UN , : E , 86400 ) ) < 6 ) - 1 )
Incollalo nell'editor delle formule. Try() è necessario solo se hai celle vuote nella colonna della data. Il -1 serve per escludere la data di inizio (o fine) dalla somma. 86400 è il numero di secondi in 24 ore.
2. La formula di colonna equivalente al suggerimento di PMroz sarebbe:
( : E - : UN ) / 86400
Re: Calcolo della durata tra due date di anni diversiPuoi fornire maggiori informazioni?Qual è il tipo e il formato dei dati delle colonne A ed E?Inoltre, quando sottrai le date ottieni il numero di secondi tra loro.Ecco un semplice esempio che calcola la differenza di data in giorni:
una data = informa ( "31/10/2012" , "m/g/a" ) ;
datato = informa ( "20/02/2013" , "m/g/a" ) ;
cdate = ( datato - una data ) / 3600 / 24 ;
Questo risulta in
112