- Home
- Categorie
- Coding e Sistemistica
- PHP
- Calcolo anno tra 2 date
-
Calcolo anno tra 2 date
Salve a tutti,
ho un codice adattato preso da un altro post in cui mi ha fornito la soluzione altraSoluzione e Ultima,
quelloche vorrei ottenere e' il tempo trascorso in anni tra la datia iniziale e oggi
esempio:Start: 2010 ------------> ***campo(start year(4) ***
today: 20199 anni in totale
ecco il codice, ma non funziona, mi restituisce errore
Catchable fatal error: Object of class DateInterval could not be converted to string in W:\domains\localhost\Cinema\cinema.php on line **323
line 323 e' questa
**[PHP]<?php echo $diff; ?>[/PHP]
[PHP]<?php // code calcolo eta' by altraSoluzione by Ultima from forum GT
$start = $row['start'];
$dateOfStart = $start;
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfStart), date_create($today));?>[/PHP]
[PHP]<?php echo $diff; ?>[/PHP]
grazie
-
$diff = abs($date2 - $date1);
-
@chiabgigi said:
$diff = abs($date2 - $date1);
grazie chiabgigi
[PHP]echo $diff = abs ($dateOfStart - $today ) . ' ' . Anni .' ' . in .' ' .totale .' ''';[/PHP]
mi restituisce quello che volevo
mi chiedevo se era possibile visualizzare l'anno in modo dinamico
esempio:
1 Anno in totale
2 Anni in totale
-
-
@Alex_2019 said:
grazie chiabgigi
[PHP]echo $diff = abs ($dateOfStart - $today ) . ' ' . Anni .' ' . in .' ' .totale .' ''';[/PHP]
mi restituisce quello che volevo
mi chiedevo se era possibile visualizzare l'anno in modo dinamico
esempio:
1 Anno in totale
2 Anni in totale
ho risolto con il tuo codice, io chiedevo un'altra cosa aggiuntiva.
Se gli anni sono uno visualizzare l'etichetta Anno, se piu' di uno visualizzare Anni
-
prova ad adattare questo al tuo codice (io nn posso testarlo)
$daysleft = $date2->diff($date1)->format('%a'); echo $daysleft.' '.($daysleft == 1 ? 'day' : 'days').' remaining';
-
ho adattato questo, ma non va
[PHP]
$start = $row['start'];$dateOfStart = $start;
$today = date("Y-m-d");$daysleft = $dateOfStart->diff($today)->format('%a'); echo $daysleft.' '.($daysleft ==1?'Anno':'Anni').' remaining';?>
[/PHP]
-
$diff = abs($dateOfStart - $today); $a=explode(' ',$diff); **if**($a0]>0){ $y=$a0]." anni "; }**else**{$y=" anno";} **echo **$y;
-
:bho:non funziona
visualizza sempre Anni[PHP]
$start = $row['start'];
$dateOfStart = $start;
$today = date("Y-m-d");
$diff = abs($dateOfStart - $today);$a=explode(' ',$diff);
if($a[0]>0){
$y=$a[0]." anni ";
}else{$y=" anno";}
echo $y;[/PHP]
-
$diff = abs($dateOfStart - $today); $a=explode(' ',$diff); **if**($a0]>1){ $y=$a0]." anni "; }**else**{$y=$diff." anno";} **echo **$y;
-
chiabgigi ciao,
perfetto, funziona adesso[PHP]<?php // code calcolo anno code by chiabgigi from forum GT
$start = $row['start'];
$dateOfStart = $start;
$today = date("Y-m-d");
$diff = abs($dateOfStart - $today);$a=explode(' ',$diff);
if($a[0]>1){
$y=$a[0]." anni ";
}else{$y=$diff." anno";}echo '<font color="blue">'. $y . ' ' . nel .' '. Cinema . '</font>';
?>
[/PHP]mi sono accorto che ho commesso un errore, questo codice serve per calcolare quanto anni l'attore ha lavorato nel cinema, questo va bene se ancora attivo, ma io
ho inserito un altro campo per segnalare la fine carriera, questo:
**
end** --------------> year(4)si potrebbe fare che se e' vuoto il campo end continua il conteggio con la l'anno attuale (today), ma se e' compilato conteggiare gli anni trascorsi tra start e **end
riepilogo campi:
start --------------> year(4)
end **--------------> year(4)
qui un esempio, dovrebbe calcolarmi 48 anni e non 51
grazie ancora
-
$start_date = date_create("1968-01-01"); $end_date = date_create("2016-01-01"); $diff = date_diff($start_date,$end_date); **echo **"Difference between two dates: ".$diff->format("%y"). "years"; /* oppure */ **echo **"Difference: " .$diff->y . " years, <br>" . $diff->m . " months, <br>" . $diff->d . " days.";
Difference between two dates: 48years
Difference:
48 years,
0 months,
0 days.
-
ciao chiabgigi, a questo ci ero arrivato, pero' bisogna integrare il codice sopra (con today, anni, anno, start) con questo, ho provato ma si vede che sono negato
-
hai scritto
**riepilogo campi:
start --------------> year(4)
end **--------------> year(4)
qui un esempio, dovrebbe calcolarmi 48 anni e non 51
Qui implica che hai un inizio e una fine carriera.
poi
bisogna integrare il codice sopra (con today, anni, anno, start)
se metti today (oggi) è inevitabile che ti conteggia tutto
è logico start/end**<?php **$row = date('1968-02-02'); $start = $row; $dateOfStart = $start; $today = date("2016-02-02"); $diff = abs($dateOfStart - $today); $a=explode(' ',$diff); **if**($a0]>1){ $y=$a0]." anni "; }**else **** **{$y=$diff." anno"; } **echo **'<div style="color:#0000FF;">'.$y.' nel cinema.</div>'; **?>**** **
48 anni nel cinema.
-
questo codice va bene se sono compilati i campi start ed end, ma nel mio database ci sono moltissimi record (il 90%) in cui e' presente solo **start **(integrato con l'anno attuale, today)
-
risolto
questo funziona benissimo[PHP]
<?php
$start = $row['start'];
$end = !empty($row['end']) ? $row['end'] : date('Y');
$diff = $end - $start;
echo '<font color="blue">'. $diff . ' Year' . ($diff > 1 ? 's' : '') . ' ' . In . ' ' . The . ' ' . Business . '</font>';
?>[/PHP]