J'ai ce code PHP:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Mais il revient December
plutôt que August
.
$result["month"]
est égal à 8, donc la sprintf
fonction ajoute un 0
pour le faire 08
.
strtotime
n'a aucune idée de ce que vous essayez de faire. Sinon, utilisez simplement un interrupteur pour quelque chose comme ça.strtotime
n'a aucune idée de ce que signifie "8".strtotime
analyse les horodatages complets comme "2012-05-12 08:43:12". Que signifie "8" dans ce contexte?echo date( "F", time() );
:? Par exemple,echo date( "F", strtotime("2019-03-09") );
affichera "Mars"Réponses:
La manière recommandée de faire ceci:
De nos jours, vous devriez vraiment utiliser des objets DateTime pour tout calcul de date / heure. Cela nécessite que vous ayez une version PHP> = 5.2. Comme le montre la réponse de Glavić , vous pouvez utiliser ce qui suit:
Le
!
caractère de formatage est utilisé pour tout réinitialiser à l' époque Unix . Lem
caractère de format est la représentation numérique d'un mois, avec des zéros non significatifs.Solution alternative:
Si vous utilisez une ancienne version de PHP et que vous ne pouvez pas mettre à niveau pour le moment, vous pouvez utiliser cette solution. Le deuxième paramètre de
date()
function accepte un horodatage, et vous pouvez l'utilisermktime()
pour en créer un, comme ceci:Si vous souhaitez que le nom du mois à 3 lettres ressemble à
Mar
, remplacez-leF
parM
. La liste de toutes les options de formatage disponibles se trouve dans la documentation du manuel PHP .la source
Juste parce que tout le monde utilise les fonctions strtotime () et date (), je vais montrer l' exemple de DateTime :
la source
DateTime::createFromFormat('m|', $result['month']);
pour réinitialiser uniquement les champs manquants.strftime()
pour cela.Utilisez
mktime()
:Voir le manuel PHP: http://php.net/mktime
la source
"m"
il renverra le mois sous forme de nombre à 2 chiffres sous forme destring
. par exemple janvier = 01, février = 02strtotime
attend un format de date standard et renvoie un horodatage.Vous semblez passer
strtotime
un seul chiffre pour sortir un format de date.Vous devriez utiliser
mktime
qui prend les éléments de date comme paramètres.Votre code complet:
Cependant, la fonction mktime ne nécessite pas de zéro avant le numéro du mois, la première ligne est donc complètement inutile, et
$result["month"]
peut être passée directement dans la fonction.Tout cela peut ensuite être combiné en une seule ligne, faisant écho à la date en ligne.
Votre code refactoré:
...
la source
date("F", mktime(null, null, null, 2));
Retourne étrangementMarch
au lieu deFebruary
.mktime
utilisera le jour actuel. Aujourd'hui, c'est 31e. Qu'est-ce que le 31 février? :)1
n'est pas fourni comme 5ème paramètremktime
mais comme 3ème paramètredate
auquel ne produirait pas les résultats attendusPour effectuer la conversion en respectant les paramètres régionaux actuels, vous pouvez utiliser la
strftime
fonction:date
ne respecte pas les paramètres régionaux,strftime
fait.la source
$monthName = utf8_encode(strftime('%B', mktime(0, 0, 0, $monthNumber)));
pour afficher des caractères accentués comme dans 'Août'Si vous voulez juste un tableau de noms de mois du début de l'année à la fin, par exemple pour remplir une sélection déroulante, j'utiliserais simplement ce qui suit;
la source
Il existe de nombreuses façons d'imprimer un mois à partir du nombre donné. Choisissez une suite pour vous.
1. fonction date () avec le paramètre 'F'
Exemple de code:
2. En créant un objet de date php en utilisant createFromFormat ()
Exemple de code
3. fonction strtotime ()
4. fonction mktime ()
5. En utilisant jdmonthname ()
la source
adapter au besoin
la source
Si vous avez le numéro du mois, vous pouvez d'abord créer une date à partir de celui-ci avec une date par défaut du 1er et l'année par défaut de l'année en cours, puis extraire le nom du mois à partir de la date de création:
Ce code suppose que votre numéro de mois est stocké dans $ i
J'espère que cela aide quelqu'un
la source
J'ai trouvé cela sur https://css-tricks.com/snippets/php/change-month-number-to-month-name/ et cela a parfaitement fonctionné.
la source
c'est trivialement facile, pourquoi tant de gens font-ils de si mauvaises suggestions? @Bora était le plus proche, mais c'est le plus robuste
c'est la façon de le faire
la source
J'utilise actuellement la solution ci-dessous pour résoudre le même problème:
Pour en savoir plus sur les paramètres régionaux définis, accédez à http://php.net/manual/en/function.setlocale.php
Pour en savoir plus sur strftime, rendez-vous sur http://php.net/manual/en/function.strftime.php
Ucfirst()
est utilisé pour mettre en majuscule la première lettre d'une chaîne.la source
la source
Vous devez définir des champs avec
strtotime
oumktime
Avec
mktime
ensemble seulement mois. Essaye celui-là:la source
utilisez le code ci-dessus
la source
Ceci pour tous les besoins de conversion date-heure
la source
la source
Je pense que l'utilisation de cal_info () est le moyen le plus simple de convertir un nombre en chaîne.
Voir la documentation pour cal_info ()
la source
Utilisation:
la source
gregoriantojd
etjdmonthname
sont dans l' extension de calendrier et nécessitent la compilation de PHP avec--enable-calendar
sauf si vous êtes sous Windows.Je sais que cette question a été posée il y a un certain temps maintenant, mais je pensais que tout le monde cherchant cette réponse essayait probablement simplement d'éviter d'écrire toutes les déclarations if / else, alors je l'ai écrite pour vous afin que vous puissiez copier / coller. La seule mise en garde avec cette fonction est qu'elle porte sur le nombre réel du mois, pas sur un nombre indexé à 0, donc janvier = 1, pas 0.
la source
Pour obtenir le nom du mois en fournissant le numéro du mois
Où «F» vous renverra le nom du mois Par exemple. 'Mai'
la source
C'est comme ça que je l'ai fait
Retour
30 June 2019
la source
Une astuce simple ici, vous pouvez utiliser la fonction strtotime () réalisable selon vos besoins, un numéro de conversion en nom de mois.
1.Si vous voulez un résultat en janvier, février et mars, essayez ci-dessous un avec le 'M' comme paramètre à l'intérieur de la date.
Sortie: mai
/ 2. Vous pouvez essayer avec le 'F' au lieu de 'M' pour obtenir le nom complet du mois en tant que sortie janvier février mars etc.
Sortie: janvier
la source
Cela extrait les mois.
la source
Utilisez une fonction native telle que
jdmonthname()
:la source
jdmonthname(3, CAL_MONTH_GREGORIAN_LONG);
retoursNovember
Vous pouvez simplement utiliser la fonction monthname () dans SQL.
SELECT monthname (date_column) du groupe de tables par monthname (date_column)
la source