Come arrotondare per eccesso o per difetto le date?Ciao,
Se ho un sacco di Opentimes nel formato MMGGAAAA hh:mm e vorrei correggere una qualsiasi di queste date che si verificano tra l'1:00 e le 3:59 per "arrotondarla" alle 4:00.
In altre parole, se il mio orario di apertura è 09/10/2020 03:12, devo arrotondare al 09/10/2020 04:00.
Al contrario, ho Closetimes nello stesso formato e vorrei correggere una qualsiasi di queste date che si verificano tra l'1:00 e le 3:59 per "arrotondarla per difetto" all'1:00.
In altre parole, se il mio orario di chiusura è 09/10/2020 03:12, devo arrotondare per difetto a 09/10/2020 01:00.
Uso l'editor di formule in JMP per tutte le mie formule, quindi se posso incollare la soluzione nell'editor di formule sarebbe fantastico!
Ho allegato una tabella di esempio.
Grazie per qualsiasi aiuto con questo.
Fiona
Tabella datiRe: Come arrotondare per eccesso o per difetto le date?Grazie molte.
Questo funziona!!
Re: Come arrotondare per eccesso o per difetto le date?Molto probabilmente esiste un modo più pulito/più efficiente per farlo, ma questi dovrebbero funzionare:
Orario di apertura arrotondato:
If(In Hours(1) <= Time Of Day(:Opentime) < In Hours(4),
(:Opentime - Time Of Day(:Opentime)) + In Hours(4),
:Opentime
)
Stessa idea per la chiusura arrotondata:
If(In Hours(1) <= Time Of Day(:Closetime) < In Hours(4),
(:Closetime - Time Of Day(:Closetime)) + In Hours(1),
:Closetime
)
Soluzione basata sulle formule "prefabbricate" da JMP quando si fa clic con il pulsante destro del mouse sul nome della colonna nella colonna della data per Data e Ora del giorno :

Re: Come arrotondare per eccesso o per difetto le date?Questo script illustra l'approccio:
Names Default to Here( 1 );
date time = 09Oct2020:03:12;
rounded date time = date time - Modulo( date time, In Hours( 1 ) ) + In Hours( 1 );
formatted rounded date time = Format( rounded date time, "m/d/y h:m" );
Show( date time, formatted rounded date time );
La formula effettiva potrebbe essere compressa in questa espressione, supponendo che si desideri un valore numerico con l'attributo di colonna Formato desiderato:
:date time - Modulo( :date time, In Hours( 1 ) ) + In Hours( 1 )
Si noti che l'arrotondamento per difetto all'ora più vicina eliminerebbe semplicemente l'aggiunta di un'ora alla fine dell'espressione.