3

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

//$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 月生成日期。有任何想法吗?

4

1 回答 1

5

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

date("F", mktime(0, 0, 0, $dateArray[1], 1))
于 2012-05-31T20:43:50.650 回答