【发布时间】:2011-03-18 01:08:33
【问题描述】:
有没有一种简单的方法可以将$month = "July"; 更改为$nmonth = 7(07 也可以)。
我可以做一个案例陈述,但肯定已经有一个函数可以转换吗?
编辑:
我希望我能接受多个答案,因为你们两个基本上给了我结合你们的力量所需要的东西。
$nmonth = date('m',strtotime($month));
这将给出$month 的数值。
谢谢!
【问题讨论】:
有没有一种简单的方法可以将$month = "July"; 更改为$nmonth = 7(07 也可以)。
我可以做一个案例陈述,但肯定已经有一个函数可以转换吗?
编辑:
我希望我能接受多个答案,因为你们两个基本上给了我结合你们的力量所需要的东西。
$nmonth = date('m',strtotime($month));
这将给出$month 的数值。
谢谢!
【问题讨论】:
试试这个:
<?php
$date = date_parse('July');
var_dump($date['month']);
?>
【讨论】:
是的,
$date = 'July 25 2010';
echo date('d/m/Y', strtotime($date));
m 将月份格式化为那里的数字表示形式。
【讨论】:
看这里很有意思,kelly给出的代码效果很好,
$nmonth = date("m", strtotime($month));
但是对于 2 月份,当当前日期是闰年的 30 或 31 以及非闰年的 29、30、31 时,它不会按预期工作。它将返回 3 作为月份编号。例如:
$nmonth = date("m", strtotime("february"));
解决方案是,像这样添加年份和月份:
$nmonth = date("m", strtotime("february-2012"));
我从 php 手册中的 comment 得到这个。
【讨论】:
$string = "July";
echo $month_number = date("n",strtotime($string));
返回 '7' [月份数]
使用date("m",strtotime($string)); 输出“08”
更多格式请参考这里..
http://php.net/manual/en/function.date.php
【讨论】:
你也可以使用这个:
$month = $monthname = date("M", strtotime($month));
【讨论】:
$nmonth = date("m", strtotime($month));
【讨论】:
$monthname = date("F", strtotime($month));
F 表示月份全名
【讨论】:
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>
【讨论】:
如果你想要字符串名称中的月份数,那么
$month = 'August';
$year = 2019;
echo date('m',strtotime($month.' '.$year));
给 08
或者如果你想要月份的全名,那么
echo date('F')
或者如果你想要月份的半个名字,那么
echo date('M')
【讨论】:
创建一个假日期可能是最简单的方法,这样您就可以使用日期功能。
这里的优秀参考:http://php.net/manual/en/function.date.php
例子:
<?
$month = 7;
$tempDate = mktime(0, 0, 0, $month, 1, 1900);
echo date("m",$tempDate);
?>
【讨论】:
上面的答案很好。这是另一种方法:-
function getMonthNumber($monthStr) {
//e.g, $month='Jan' or 'January' or 'JAN' or 'JANUARY' or 'january' or 'jan'
$m = ucfirst(strtolower(trim($monthStr)));
switch ($m) {
case "January":
case "Jan":
$m = "01";
break;
case "February":
case "Feb":
$m = "02";
break;
case "March":
case "Mar":
$m = "03";
break;
case "April":
case "Apr":
$m = "04";
break;
case "May":
$m = "05";
break;
case "June":
case "Jun":
$m = "06";
break;
case "July":
case "Jul":
$m = "07";
break;
case "August":
case "Aug":
$m = "08";
break;
case "September":
case "Sep":
$m = "09";
break;
case "October":
case "Oct":
$m = "10";
break;
case "November":
case "Nov":
$m = "11";
break;
case "December":
case "Dec":
$m = "12";
break;
default:
$m = false;
break;
}
return $m;
}
【讨论】:
也许可以与strtotime() 和date() 结合使用?
【讨论】:
使用
date("F", mktime(0, 0, 0, ($month)));
where, $month value will be 1 -> 12
【讨论】:
$date = 'Dec 25 2099';
echo date('d/m/Y', strtotime($date));
这返回01/01/1970,这意味着php不支持所有日期,它返回正确的格式化日期直到Jan 19 2038但Jan 20 2038返回01/01/1970
【讨论】:
$dt = '2017-Jan-10';
OR
$dt = '2017-January-10';
回显日期('Y-m-d', strtotime($dt));
回显日期('Y/m/d', strtotime($dt));
【讨论】:
使用 PHP 5.4,您可以将 Matthew 的答案变成一条线:
$date = sprintf('%d-%d-01', $year, date_parse('may')['month']);
【讨论】:
我知道这似乎是一个简单的解决方案,但为什么不直接使用这样的方法
<select name="month">
<option value="01">January</option>
<option value="02">February</option>
<option selected value="03">March</option>
</select>
用户看到了二月,但是02发布到了数据库中
【讨论】: