如何从PHP中的数字中获取月份名称?

时间:2011-08-07 06:24:48

标签: php date datetime

我有一个包含月份编号的变量。如何从此值中获取月份名称?

我知道我可以为$month_num => $month_name定义一个数组,但我想知道PHP中是否有一个时间函数可以做到这一点,而不需要数组?

5 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:14)

您可以使用F date()格式字符获取Unix时间戳的文本月份,并且您可以将几乎任何格式的日期转换为带有strtotime()的Unix时间戳,所以选择任何一年和第1天至第28天(因此它在所有12个月内出现)并且:

$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

使用strtotime()的好处是它非常灵活。因此,假设您需要一个文本月份名称数组,从脚本运行之日起一个月开始;

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

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

Working example

答案 2 :(得分:5)

接受答案的略短版本是:

date('F', strtotime("2000-$monthnumber-01"));
  • F代表“月份名称”,符合date上的表格。

  • 2000只是当年的填充物,01是当天的填充物;因为我们不关心除月份名称以外的任何事情。

这是关于ideone的a demo

答案 3 :(得分:2)

你也可以使用:

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

这只是另一种方式。与@Dreaded semicolon的答案相比,我对此的效率一无所知。

这是关于ideone的a demo

供参考:

  • jdmonthame返回Julian日历月名称。

  • gregoriantojd将格里高利(当前使用的)日历日期转换为朱利安(1, 1部分代表日期和年份。)

答案 4 :(得分:0)

使用函数mktime,它将日期元素作为参数。

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

输出: 的三月