Campo ora
Ho la necessità in una WebForm di utilizzare un campo ora, non orario. Per esempio 3 ore e 20 minuti o 0,45 minuti e così via.
Se uso il campo data con il solo orario non penso vada bene e sono incerto tra un campo numerico decimale o testo.
Su questo campo però va fatto anche il controllo che la base non dev'essere 100 bensì 60, per compensare eventuali errori di battitura e segnalare l'errore per un inserimento tipo 3 ore e 80 minuti (3,80 o 3:80)
Cosa mi suggerite?
Grazie
Gaetano

Risposte
Se usi un decimale, per
Se usi un decimale, per quanto scomodo e poco intuitivo, non hai bisogno di una validazione di questo tipo in quanto la quantità dopo la virgola rappresenta la frazione di ora (ovviamente se l'unità equivale a 1 ora, quindi 60 * 0,XX). 1,25 - 1,50 - 1,75 - 1,80 etc .. sono tutti valori validi che equivalgono a 1h + 15m, 30m, 45m, 48m e così via.
La correttezza formale invece quindi errori di battitura (es: se inserisci simboli o lettere) è già garantita da Drupal per quel tipo di campo.
Giuste osservazioni, e nella
Giuste osservazioni, e nella sostanza calcoli tornano.
Mi ponevo la questione, come indicato da te della forma. Qualcuno potrebbe richiedere l'inserimento del controllo sul decimale non superiore a 60 (possibili errori di battitura) e in caso contrario segnalare l'errore.
Mi pongo la domanda perchè le ore andranno calcolate per una tariffa e potrebbero sorgere dei problemi
Userò il campo numerico. Se ci sarà la possibilità d'inserire un controllo sul decimale ben venga.
grazie
Maurizio ho effettuato delle
Maurizio ho effettuato delle prove e mi sa che non va bene. Inserendo 1,70 (1 ora e 70 minuti, forzando l'errore) corrispondea 2 ore e 10 ma moltiplicando 60 * 1,70 ottengo 102 (ma l'utente dovrebbe scrivere 2,10.
Poi c'è un altra questione non menzionata da me che è che l'importo intero va moltiplicato per un'aliquota ed il decimale per un'altra.
L'unica è controllare i decimali inserendo un max da inserire di 60 oppure un controllo sul valore complessivo prendendo il decimale e se maggiore di 60 aggiungere un'ora all'inero e sottrarlo al decimale.
Ma non so se si possa form.alter
No, 1.70 non può essere
No, 1.70 non può essere interpretato come 1h + 70m, è sbagliato.
Se usi un decimale, la parte dopo la virgola rappresenta una frazione di ora, non il numero di minuti.
Di nuovo, no non va assolutamente, le ore intere sono rappresentate dalla parte prima della virgola ....
A questo punto o abbandoni l'idea di usare un decimale (magari usi un intero per le ore e un intero per i minuti, 2 campi quindi, il secondo con un minimo di 0 e un massimo di 59) o lo usi seguendo la logica
NUMERO ORE [,] FRAZIONE DI ORA
non vedo alternative.
I 2 campi li vorrei evitare,
I 2 campi li vorrei evitare, penso a cosa possa essere + comodo
grazie