Php mktime在6月/7月产生错误的奇怪行为

Php mktime在6月/7月产生错误的奇怪行为,php,mktime,Php,Mktime,我有以下笨拙的代码将一个日期字符串转换成另一个日期字符串 //$invDate starts as a date string in format dd/mm/yyyy $dateArray = explode('/', $invDate); $invDate = $dateArray[0] .' '. date("F",mktime (1,1,1,$dateArray[1])) .' '. $dateArray[2]; 我并不特别为它感到自豪,但它在一个美国和英国的约会方式都会

我有以下笨拙的代码将一个日期字符串转换成另一个日期字符串

//$invDate starts as a date string in format dd/mm/yyyy
$dateArray = explode('/', $invDate);      
$invDate = $dateArray[0] .' '.  date("F",mktime (1,1,1,$dateArray[1])) .' '. $dateArray[2];
我并不特别为它感到自豪,但它在一个美国和英国的约会方式都会产生混乱的国家产生了一个明确的日期

多年来它一直运转良好,但今天突然开始转向

01/06/2012
进入

我已经查看了mktime的行为,但看不出
mktime(1,1,1,6)
应该在7月份生成日期的任何原因。有什么想法吗?

发生这种情况是因为缺少字段的默认时间为当前时间。由于您没有指定日期,而今天是
5月31日
,因此假定
6月31日
,而这一天不存在,因此它将结束到7月。通过向mktime添加第五个参数来指定一天:

date("F", mktime(0, 0, 0, $dateArray[1], 1))

我应该补充一点,很明显我可以创建一个月数组而不使用mktime,但是我很想看看我是否犯了错误,或者这是一个bug。
date("F", mktime(0, 0, 0, $dateArray[1], 1))