8

IE

Month        Returns
January      1
February     2
March        3
April        4
May          5
June         6
July         7
August       8
September    9
October      10
November     11
December     12

我见过在给定月份数并返回月份字符串时使用 mktime 的示例,但反之则不然。

4

6 回答 6

22

尝试

echo date('n', strtotime('November')); // returns 11

如果您必须经常这样做,您可以考虑使用硬编码这些值的数组:

$months = array( 1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April',
                 5 => 'May',     6 => 'June',     7 => 'July',  8 => 'August',
                 9 => 'September', 10 => 'October', 11 => 'November',
                 12 => 'December');

也可以反过来做,使用键的名称和值的数字。

使用您所做的值的名称

echo array_search('November', $months); // returns 11

和你做的钥匙的名字

echo $months['November']; // returns 11

我发现使用数字作为键通常会更好一些,尽管对于您的 UseCase,键的名称方法可能更舒服。数组中只有 12 个值,数组方法之间应该没有太大区别。

快速基准测试注意到 0.000003 秒与 0.000002 秒之间的差异,而我的计算机上的时间转换需要 0.000060 秒(阅读:在其他计算机上可能不同)。

于 2010-04-23T20:15:57.027 回答
7

strtotime()使用转换为时间戳怎么样November,然后,date()使用格式的函数n来获取相应的数字:

$ts = strtotime('november');
echo date('n', $ts);

给出以下输出:

11


而且,只是为了好玩,一部分代码如下:

$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', );
foreach ($months as $m) {
    $ts = strtotime($m);
    echo $m . ' : ' . date('n', $ts) . '<br />';
}

将为您提供所有月份的列表及其相应的数字——表明这个想法将适用于所有 12 个月,而不仅仅是 11 月;-)

于 2010-04-23T20:16:30.427 回答
5

我无法想象这更有效,但它有效

$t = strtotime("March");
echo date('n',$t);
于 2010-04-23T20:17:20.400 回答
1

我唯一能想到的就是将每个字符串设置为变量并使其=相应的数字。但是话又说回来,我很新,所以我也很想看看是否有更简单的方法(=

于 2010-04-23T20:17:25.450 回答
1
$months = array('January', 'February', 'March', 'April', 'May', 'June', 
                'July', 'August', 'September', 'October', 'November', 'December', );
foreach ($months as $m) {
    echo $m."=".date('n', strtotime($m))."<br>";
};
于 2010-04-23T21:04:05.707 回答
0

根据您的情况,最有效的解决方案可能是创建一个关联数组,例如:

$months = array("january" => 1, "february" => 2, "march" => 3, "april" => 4, "may" => 5, "june" => 6, "july" => 7, "august" => 8, "september" => 9, "october" => 10, "november" => 11, "december" => 12);

然后您的查找非常简单:

$month = "Nobember";
$monthNumber = $months[strtolower($month)];
于 2010-04-23T21:05:50.080 回答