Jump to content

Problème date avec le mois d'août


Recommended Posts

Bonjour,

dans ma fiche produit j'ai ajouté la date de création de la fiche produit.

J'ai donc ceci: {$product->date_add|date_format:'%d %B %Y'|escape:'html':'UTF-8'}

au format: 12 janvier 2010

Mais la date ne s'affiche pas quand les produits sont créés au mois d'Aout.

J'ai testé avec : {$product->date_add|escape:'html':'UTF-8'} et la date s'affiche bien (mais pas au bon format)

Ai-je oublié quelque choses pour ce moi d'Août?

merci pour votre aide.

presta 1.6

Link to comment
Share on other sites

 

1 minute ago, doekia said:

heu... ce ne sont pas les meme ligne:

{$product->date_add|date_format:'%d %B %Y'|escape:'html':'UTF-8'}

{$product->date_add|escape:'html':'UTF-8'}

oui, car les 2 format fonctionne, mais sont différent.

le second affiche par exemple: 2018-08-23 21:17:38  (donc un autre format)

le {$product->date_add|date_format:'%d %B %Y'|escape:'html':'UTF-8'} fonctionne (dans le format que j'ai besoin) mais la date ne s'affiche pas quand le mois d'août est présent. Je pense que c'est un problème d'accent

j'ai cherché ici: https://www.smarty.net/docsv2/fr/language.modifier.date.format.tpl

mais aucune info sur l'accent

Link to comment
Share on other sites

ça ne doit pas bugguer que pour le mois d’août (février?)

date_add arrive de la bdd en format YYYY-mm-dd HH:MM:ss, pour afficher des mois en français, tu as donc dû forcer la locale à fr

Selon la doc smarty https://www.smarty.net/docs/en/language.modifier.date.format.tpl , seul le format mysql brut (YYYYMMDDHHMMSS) utilise un autre mécanisme, sinon c'est un unixtimestamp ou une chaine formé de month day year analysable par strtotime http://php.net/strtotime (regarde la note sur la désambiguïsation des formats) qui s'affiche ensuite avec strftime http://php.net/strftime

 
Lorsque je teste ce code:
<?php

$s = '2018-08-23 21:17:38';

setlocale(LC_ALL,'C');
$d = strtotime($s);
echo strftime('%d %B %Y',$d).PHP_EOL;

setlocale(LC_ALL,'fr_FR');
$d = strtotime($s);
echo strftime('%d %B %Y',$d).PHP_EOL;

setlocale(LC_ALL,'fr_FR.UTF8');
$d = strtotime($s);
echo strftime('%d %B %Y',$d).PHP_EOL;

 

j'obtiens:

23 August 2018
23 ao�t 2018
23 août 2018

 

Attention l'usage de setlocale() peut mener à de "drôle" en univers mod_php. Et le bon fonctionnement dépend des locales de l'hébergements - tous n'ont pas forcément les locales UTF8

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...