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

时间:2012-05-31 20:32:13

标签: 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];

我并不为此感到特别自豪,但它在一个美国和英国的约会方法都会产生混淆的国家产生了一个明确的约会。

它的工作时间很长,然后突然间它已经开始转向了

01/06/2012

1 July 2012

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

1 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为mktime默认为缺少字段的当前时间。由于您没有指定一天,而今天是May 31st,因此它假设June 31,它不存在,所以它包裹到七月。通过向mktime添加第五个参数来指定一天:

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