Tengo este código PHP:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Pero está regresando en December
lugar de August
.
$result["month"]
es igual a 8, por lo que la sprintf
función está agregando a 0
para hacerlo 08
.
strtotime
no tiene idea de lo que está tratando de hacer. Alternativamente, solo use un interruptor para algo como esto.strtotime
no tiene idea de lo que significa "8".strtotime
analiza marcas de tiempo completas como "2012-05-12 08:43:12". ¿Qué significa "8" en este contexto?echo date( "F", time() );
:? Por ejemplo,echo date( "F", strtotime("2019-03-09") );
saldrá "Marzo"Respuestas:
La forma recomendada de hacer esto:
Hoy en día, realmente debería usar objetos DateTime para cualquier matemática de fecha / hora. Esto requiere que tengas una versión PHP> = 5.2. Como se muestra en la respuesta de Glavić , puede usar lo siguiente:
El
!
carácter de formato se utiliza para restablecer todo a la época de Unix . Elm
carácter de formato es la representación numérica de un mes, con ceros a la izquierda.Solución alternativa:
Si está utilizando una versión PHP anterior y no puede actualizar en este momento, podría utilizar esta solución. El segundo parámetro de
date()
función acepta una marca de tiempo, y podría usarlamktime()
para crear una, de esta manera:Si desea el nombre del mes de 3 letras
Mar
, cambieF
aM
. La lista de todas las opciones de formato disponibles se puede encontrar en la documentación del manual de PHP .fuente
Solo porque todos usan las funciones strtotime () y date (), mostraré el ejemplo de DateTime :
fuente
DateTime::createFromFormat('m|', $result['month']);
para restablecer solo los campos que faltan.strftime()
para eso.Uso
mktime()
:Consulte el manual de PHP: http://php.net/mktime
fuente
"m"
devolverá el mes como un número de 2 dígitos como astring
. por ejemplo, enero = 01, febrero = 02strtotime
espera un formato de fecha estándar y devuelve una marca de tiempo.Parece que está pasando
strtotime
un solo dígito para generar un formato de fecha.Debería usar el
mktime
que toma los elementos de fecha como parámetros.Tu código completo:
Sin embargo, la función mktime no requiere un cero inicial al número de mes, por lo que la primera línea es completamente innecesaria y
$result["month"]
se puede pasar directamente a la función.Esto se puede combinar en una sola línea, haciendo eco de la fecha en línea.
Su código refactorizado:
...
fuente
date("F", mktime(null, null, null, 2));
regresa enMarch
lugar deFebruary
.mktime
utilizará el día actual. Hoy es el 31 ¿Qué es el 31 de febrero? :)1
no está siendo proporcionado como quinto parámetro paramktime
sino como tercera parámetro adate
resultados que no produciría esperadosPara realizar la conversión con respecto a la configuración regional actual, puede usar la
strftime
función:date
no respeta el entorno local, lostrftime
hace.fuente
$monthName = utf8_encode(strftime('%B', mktime(0, 0, 0, $monthNumber)));
para mostrar caracteres acentuados como en 'Août'Si solo desea una variedad de nombres de mes desde el comienzo del año hasta el final, por ejemplo, para completar una selección desplegable, simplemente usaría lo siguiente;
fuente
Hay muchas formas de imprimir un mes desde el número dado. Elige una suite para ti.
1. función date () junto con el parámetro 'F'
Ejemplo de código:
2. Al crear un objeto de fecha php usando createFromFormat ()
Ejemplo de código
3. función strtotime ()
4. función mktime ()
5. Al usar jdmonthname ()
fuente
adaptar según sea necesario
fuente
Si tiene el número de mes, primero puede crear una fecha a partir de él con una fecha predeterminada del primer año y el año predeterminado del año actual, luego extraer el nombre del mes de la fecha de creación:
Este código supone que tiene su número de mes almacenado en $ i
Espero que esto ayude a alguien
fuente
Encontré esto en https://css-tricks.com/snippets/php/change-month-number-to-month-name/ y funcionó perfectamente.
fuente
Esto es trivialmente fácil, ¿por qué hay tanta gente haciendo tan malas sugerencias? @Bora fue el más cercano, pero este es el más robusto
Esta es la manera de hacerlo
fuente
Actualmente estoy usando la solución a continuación para abordar el mismo problema:
Para leer más sobre la configuración regional, vaya a http://php.net/manual/en/function.setlocale.php
Para obtener más información sobre strftime, vaya a http://php.net/manual/en/function.strftime.php
Ucfirst()
se usa para poner en mayúscula la primera letra de una cadena.fuente
fuente
Necesita establecer campos con
strtotime
omktime
Con
mktime
set solo mes. Prueba este:fuente
usa el código anterior
fuente
Esto para todas las necesidades de conversión de fecha y hora
fuente
fuente
Creo que usar cal_info () es la forma más fácil de convertir de número a cadena.
Ver los documentos para cal_info ()
fuente
Utilizar:
fuente
gregoriantojd
yjdmonthname
están en la extensión de calendario y requieren compilar PHP a--enable-calendar
menos que esté en Windows.Sé que esta pregunta se hizo hace un tiempo, pero pensé que todos los que buscaban esta respuesta probablemente solo trataban de evitar escribir las declaraciones if / else completas, así que lo escribí para que puedan copiar / pegar. La única advertencia con esta función es que va en el número real del mes, no en un número indexado a 0, por lo que enero = 1, no 0.
fuente
Para obtener el nombre del mes proporcionando el número de mes
Donde 'F' te devolverá el nombre del mes Ej. 'Mayo'
fuente
Así es como lo hice
devoluciones
30 June 2019
fuente
Un truco simple aquí puede usar la función strtotime () viable según su necesidad, un número de conversión al nombre del mes.
1.Si desea un resultado en enero, febrero y marzo, intente debajo de uno con la 'M' como parámetro dentro de la fecha.
Salida: mayo
/ 2. Puede intentar con la 'F' en lugar de la 'M' para obtener el nombre completo del mes como salida enero febrero marzo, etc.
Salida: enero
fuente
Eso extrae los meses.
fuente
Use una función nativa como
jdmonthname()
:fuente
jdmonthname(3, CAL_MONTH_GREGORIAN_LONG);
vuelveNovember
Puede usar la función monthname () en SQL.
SELECCIONE el nombre del mes (fecha_columna) del grupo de tablas por nombre del mes (fecha_columna)
fuente