Convertir nombres de jours en An Mois Jours

Résolu
Petit_Yio -  
 Toto -
Bonjour,

J'aimerai convertir un nombre de jours en An Mois Jours dans une vue twig.

Exemple :

Statut expiré depuis {{ jour_Restant - 365 }} jours cela donne : Statut expiré depuis 1828 jours.

Je voudrai que 1828 jours devienne "depuis X an(s) X mois X jour(s).

Je rappelle que je souhaite faire ça en PHP si c'est préférable de le faire dans le contrôleur ou twig si c'est préférable de le faire dans la vue.

A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Une solution possible en utilisant le modulo :
$nombreJours = 1828;

$annees = intval($nombreJours / 365);
$jours = intval(($nombreJours % 365));
$mois = intval($jours / 30);

echo "$annees annees $mois mois $jours jours";


Néanmoins cette première solution n'est pas précise (pas de gestion des années bissextile, on considère que tous les mois font 30 jours...).

Une autre solution plus précise est d'utiliser la classe DateTime :
$start_date = new DateTime(date("Y/m/d"));
$end_date = new DateTime(date("Y/m/d",strtotime("-1828 days")));
$dd = date_diff($start_date,$end_date);

echo "$dd->y years $dd->m months $dd->d days";


Bonne journée,
0
Toto
 
Bonjour,

Merci pour la solution en PHP ! Aurais-tu une solution pour twig (côté vue) ?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Je ne connais pas bien twig mais la première solution devrait facilement pouvoir être reprise (utilisation du filtre number_format à la place de intval), par exemple :
Années : {{ ($nombreJours / 365)|number_format(0, ',', ' ') }}
Mois : {{ (($nombreJours % 365) / 30)|number_format(0, ',', ' ') }}
Jours : {{ ($nombreJours % 365)|number_format(0, ',', ' ') }}

Pour la solution avec DateInterval, une méthode est proposé ici : http://watermelon-pixels.fr/blog/calculer-une-intervalle-de-temps-avec-twig
0
Toto
 
Je vais tester cette solution !

Merci
0