Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
El formato de fecha devuelve un año incorrecto en PHP con DateFmt en francés

Escribí esta función

 function formatted_month($month) { $first_day_in_month = new DateTime('2022-01-01'); $fmt = datefmt_create( 'en_EN', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Europe/Paris', IntlDateFormatter::GREGORIAN, 'MMMM YY' ); $formatted_month = datefmt_format($fmt,$first_day_in_month); return $formatted_month; }

Este regreso el 22 de enero como se esperaba, pero este código:

 function formatted_month($month) { $first_day_in_month = new DateTime('2022-01-01'); $fmt = datefmt_create( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Europe/Paris', IntlDateFormatter::GREGORIAN, 'MMMM YY' ); $formatted_month = datefmt_format($fmt,$first_day_in_month); return $formatted_month; }

Devuelve el 21 de enero. La única diferencia es esta línea.

 'en_EN', -> 'fr_FR'

Lo mismo para es_ES y los idiomas distintos del inglés...

¿Tienes alguna explicación? Gracias

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Este es un error sutil de la cadena de formato, que es que hay varios especificadores de año diferentes:

  • Un yy o yyyy en minúsculas es el año normal que esperaría, para usar con el mes y el día.
  • Un YY o YYYY en mayúsculas es el año para usar con "semana del año"

Para la mayoría de las fechas, estas son las mismas, por lo que es fácil pasar por alto la diferencia. Pero al principio y al final del año, importa dónde comienza y termina la semana: el 1 de enero aún puede estar en la última semana del año anterior, o el 31 de diciembre puede estar en la primera semana del próximo año.

Podemos ver claramente la diferencia si usamos una cadena de formato de 'ww YYYY, MMMM yyyy' , para mostrar el número de semana y ambas definiciones de año:

  • Para en_GB obtenemos "01 2022, enero 2022"
  • Para fr_FR obtenemos "52 2021, enero 2022"

Por lo tanto, siempre use la forma "yy" en minúsculas, a menos que realmente esté mostrando los números de la semana.

 function formatted_month($month) { $first_day_in_month = new DateTime('2022-01-01'); $fmt = datefmt_create( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Europe/Paris', IntlDateFormatter::GREGORIAN, 'MMMM yy' ); $formatted_month = datefmt_format($fmt,$first_day_in_month); return $formatted_month; }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda