2011-08-07 28 views
13

Tengo una variable que contiene un número de mes. ¿Cómo puedo obtener el nombre del mes a partir de este valor?¿Cómo obtener el nombre del mes de un número en PHP?

Sé que podría definir una matriz para $month_num => $month_name, pero quiero saber si hay una función de tiempo en PHP que pueda hacer esto, sin la necesidad de una matriz?

+0

[ 'date'] (http://php.net/manual/en/function.date.php) es lo suficientemente bueno? – Nemoden

Respuesta

21
date("F",mktime(0,0,0,$monthnumber,1,2011)); 
+5

Aunque, esta es la respuesta correcta, debería haber una explicación de lo que está sucediendo. – Kayla

+0

Ver [mi respuesta] (http://stackoverflow.com/a/24596827/1563422) a continuación para una forma un poco más corta de hacer esto. –

14

Usted puede obtener sólo el mes textual de una marca de tiempo Unix con el carácter Fdate() formato, y se puede convertir casi cualquier formato de fecha en una marca de tiempo Unix con strtotime(), así que escoja un año y un día 1 a 28 (por lo que es presente en los 12 meses) y hacer:

$written_month = date("F", strtotime("2001-$number_month-1")); 

// Example - Note: The year and day are immaterial: 
// 'April' == date("F", strtotime("2001-4-1")); 

Working example

lo bueno de usar strtotime() es que es muy flexible. Entonces digamos que desea una matriz de nombres textuales de meses que comienza un mes desde cada vez que se ejecuta el script;

<?php 
for ($number = 1; $number < 13; ++$number) { 

    // strtotime() understands the format "+x months" 
    $array[] = date("F", strtotime("+$number months")); 
} 
?> 

Working example

+0

Una idea excelente, aunque el resultado comienza a partir del mes que viene, que puede no ser el resultado estándar (enero, febrero, etc.) que esperamos. – Ben

2

También es posible usar:

jdmonthname(gregoriantojd($monthnumber, 1, 1), CAL_MONTH_GREGORIAN_LONG) 

Es sólo otra manera. No sé nada sobre la eficacia de esto en comparación con la respuesta de @Dreaded semicolon.

Aquí está a demo en ideone.

Como referencia:

  • jdmonthame devuelve el nombre del calendario Juliano mes.

  • gregoriantojd convierte una fecha del calendario gregoriano (actualmente utilizado) en Julian (la parte 1, 1 representa el día y el año).

5

Una versión ligeramente más corto de la respuesta aceptada es:

date('F', strtotime("2000-$monthnumber-01")); 
  • F significa "nombre del mes", según la tabla de date.

  • El 2000 es solo un relleno para el año, y el 01 un relleno para el día; ya que no nos preocupa nada más que el nombre del mes.

Aquí está a demo en ideone.

0

utiliza la función mktime que toma los elementos de fecha como parámetros.

<?php 
$month_number= 3; 
$month_name = date("F", mktime(0, 0, 0, $month_number, 10)); 
echo $month_name; 
?> 

Salida: de marzo

Cuestiones relacionadas