Salve ho fatto questa funzione per visualizzare la differenza tra 2 date in anni mesi e giorni:

Codice PHP:
function datadiff($datareg$lang){
    
    
$arrdatareg=explode(" ",$datareg);
    
$arrdatareg=explode("-",$datareg);
    
$datareg=mktime(12,0,0,$arrdatareg[1],$arrdatareg[2],$arrdatareg[0]);
    
    
$datatt=date("Y/m/d");
    
$arrdatatt=explode("/",$datatt);
    
    
$datatt=time();
    
    
$diffdate=($datatt $datareg);
    
$giorni=ceil(($diffdate 60 60 24) / 1);
    
$mesi=floor(($diffdate 60 60 24) / (365 12)-12);
    
$anni=floor(($diffdate 60 60 24) / 365);
    
    (
$anni>1) ? $stringanno="anni" $stringanno="anno";
    (
$mese>1) ? $stringmese="mesi" $stringmese="mese";
    
$stringgiorno= ($giorni==1) ? "giorno" "giorni";
    
    if(
$anni>0$string="$anni $stringanno, ";
    if(
$mesi>0$string.="$mesi $stringmese e ";
    (
$giorni>0) ? $string.="$giorni $stringgiorno$string="meno di 1 giorno $giorni";

ora anni e mesi vanno bene ma giorni mi da naturalmente il totale dei giorni trascorsi ma a me servirebbe non il totale ma la somma entro i 30 giorni del mese ad esempio se oggi è 11 e la data precedente è 6 dovrebbe darmi 5 giorni trascorsi.

Se la distanza è inferiore a 30 mi da il risultato giusto ma superiore a 30 no, ad esempio se sono trascorsi 45 giorni tra le 2 date mi dovrebbe dare 1 mese e 15 giorni mentre mi da 1 mese e 45 giorni (anche qui giustamente ma non so come dividere $giorni per farmi dare la differenza dei giorni).