[PHP] DATE : Problème de formatage

DATE : Problème de formatage [PHP] - PHP - Programmation

Marsh Posté le 22-01-2024 à 22:58:58    

Bonjour,
 
J'essaie de traduire les DateTimeImmutable en Francais en utilisant la technique suivante :
 

Code :
  1. $start = new DatetimeImmutable("2024-01-01" );
  2.   $start2 = new DatetimeImmutable("2017-01-01" );
  3.   $fmt = new IntlDateFormatter(
  4.     'fr_FR',
  5.     IntlDateFormatter::FULL,
  6.     IntlDateFormatter::FULL,
  7.     null,
  8.     null, //IntlDateFormatter::GREGORIAN,
  9.     'MMMM Y'
  10.   );
  11.    
  12.   echo $fmt->format($start)."<br />";
  13.   echo $fmt->format($start2);


Résultat :  

janvier 2024
janvier 2016


 
Pourquoi janvier 2016 au lieu de janvier 2017 ?  
Bonne question :o
 
Si vous avez une idée :)


Message édité par spark le 23-01-2024 à 00:32:55

---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 22-01-2024 à 22:58:58   

Reply

Marsh Posté le 22-01-2024 à 23:42:16    

ca semble marcher avec  
 

Code :
  1. $fmt = new IntlDateFormatter(
  2.     'fr_FR',
  3.     IntlDateFormatter::FULL,
  4.     IntlDateFormatter::FULL,
  5.     null,
  6.     null, //IntlDateFormatter::GREGORIAN,
  7.     'MMMM y'
  8.   );


 
'y' au lieu de 'Y', comportement étrange !!


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 23-01-2024 à 13:18:28    

Ce n'est pas étrange, c'est la norme utilisée.
On utilise le minuscule pour l'année, et le majuscule pour "l'année de la semaine".

Reply

Marsh Posté le 23-01-2024 à 13:55:20    

un lien vers la doc ?


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 23-01-2024 à 15:41:14    

Reply

Marsh Posté le 23-01-2024 à 16:13:17    

https://unicode-org.github.io/icu/u [...] /datetime/


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 29-01-2024 à 13:23:46    

Facile : le 01/01/2017 tombe un dimanche, donc la semaine appartient à l'année précédente et donc, pour 2017, la semaine n°1 commençait le 02/01/2017.
La norme pour définir la semaine n°1 d'une année : celle qui contient le premier jeudi de l'année. ;)
 
Les formats : https://www.php.net/manual/fr/datetime.format.php


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-01-2024 à 17:52:57    

oui la fonction ->format est très puissante, mais elle ne retourne que des noms de mois/jours en anglais. D'où la bidouille avec IntlDateFormatter


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 29-01-2024 à 17:58:47    

fonction date(), ça serait pas mieux ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-01-2024 à 19:19:03    

ca prends pas en charge la langue je crois.
 
sinon y a strftime()
https://www.php.net/manual/fr/function.strftime.php
 
OBSOLETE depuis php 8.1.0


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 29-01-2024 à 19:19:03   

Reply

Marsh Posté le 29-01-2024 à 20:21:32    

Si tu as un nb de langues limité, tu peux te recoder la fonction en mettant toutes les traducs de mois dans un tableau associatif dont la première clé est le code de la langue et ensuite, les mois de 0 à 11 (donc pour afficher la traduc, tu fais le n° du mois - 1 pour tomber sur le bon indice dans le tableau);)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed