即
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的示例,但不是相反的。
答案 0 :(得分: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个值,则数组approches之间应该没有太大区别。
快速基准测试显示0.000003s与0.000002s的差异,而我的计算机上的时间转换需要0.000060s(读取:在其他计算机上可能会有所不同)。
答案 1 :(得分:7)
如何使用strtotime()
将November
转换为时间戳,然后使用n
格式的date()
函数获取相应的数字:
$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月; - )
答案 2 :(得分:5)
我无法想象这会更有效率,但它有效
$t = strtotime("March");
echo date('n',$t);
答案 3 :(得分:1)
我能想到的唯一一件事就是将每个字符串设置为变量并使其=相应的数字。但是我又很新,所以我很想看看有没有更简单的方法(=
答案 4 :(得分: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>";
};
答案 5 :(得分: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)];