Somma dei Minuti

  • Creatore Discussione Creatore Discussione Gae
  • Data di inizio Data di inizio

Gae

Utente Attivo
15 Mar 2021
55
4
8
Un saluto a tutti, sono nuovo sia della comunità che della conoscenza di php. Ho letto vari post sull'argomento che m'interessa ma non trovato la soluzione.
La questione è abbastanza strana.
Anticipo, i calcoli funzionano ma solo se i numeri sono a doppia cifra. Cioè da 10 in poi. Se c'è un campo con 01 non lo tratta come 1 minuto ma come 10 minuti.
I campi da sommare sono di 3 tipologie
- Campo time
- campo numerico decimale
- campo numerico (esprime un tempo in minuti e tramite il modulo % ho i minuti residui

Campo time 18:10 (10) minuti
Campo decimale 1.03 (03) minuti
Campo numerico 64 (04) minuti
La somma dei minuti dovrebbe restituire 17 invece restituisce 80 minuti

Non so se operare con le stringhe o altro. Fatte varie prove ma senza trovare la soluzione

Grazie per l'attenzione
 
Codice:
<?php
$str1="10";
$str2="03";
$str3="04";
$str1 = ltrim($str1, '0');
$str2 = ltrim($str2, '0');
$str3 = ltrim($str3, '0');
$z = $str1 + $str2 + $str3;
echo $z;
?>
 
Puoi creare 3 funzioni, ognuna per la rappresentazione di una diversa tipologia:
PHP:
function orario($time){
return substr($time, 3, 2);
}
//funzione per gli orari scritti decimali
function decimale($time){
return (($time - floor($time))*100);
}
//funzione per gli orari scritti numericamente
function numerico($time){
return ($time % 60);
}
echo orario("18:10")+decimale(1.03)+numerico(64);
//output: 17
(L'ho testato e funziona)
 
Vi ringrazio per l'aiuto, vanno bene entrambe.
Ho fatto delle prove e quando assemblo l'ora non mi visualizza i minuti. Ho fatto delle prove ed ho notato che se i minuti sono ad 1 cifra invece di 2 non visualizza.
I dati su cui faccio la prova sono:
1.02 (2 minuti)
62' (2 minuti)
09:02 (2 minuti)
Totale 6 minuti con Ora finale 09:06

Questo il Codice per la visualizzazione dell'Ora Finale
$OraRi = $OreTo.':'.$MinTo;

Per far visualizzare l'ora faccio prima questo controllo
if (strlen($MinTo) === 1) {
$MinTo = '0'.$MinTo;
}

Come logica funziona ma non so se sia il modo giusto di operare

Di nuovo grazie
 

Discussioni simili