我有以下笨拙的代码将日期字符串转换为另一个日期字符串。
//$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 月生成日期。有什么想法吗?
最佳答案
发生这种情况是因为 mktime默认为缺失字段的当前时间。由于您没有指定日期,而今天是 5 月 31 日
,它假定 6 月 31 日
,它不存在,所以它会绕到 7 月。通过向 mktime 添加第五个参数来指定日期:
date("F", mktime(0, 0, 0, $dateArray[1], 1))
关于php - mktime 在 6 月/7 月产生错误的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840844/