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

标签 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 月生成日期。有什么想法吗?

最佳答案

发生这种情况是因为 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/

相关文章:

php - 如何使用按位系统允许某些权限而不允许其他权限?

javascript - 如何将数据从sql传输到javascript?

php - 当我手动添加秒数时跳过 1 小时

php - MKTIME,PHP 日期/时间戳 YYYY-MM-DD

php - 如何在php中将日期和时间转换为时间戳?

javascript - 使用 Node.js 路由欺骗 index.php

php - 循环内的繁重处理 - 如何优化?

PHPBB登录实现

Python 在 if 语句中不按 time.mktime 条件执行

c - 如何在 C 中使用 mktime 检查日期是否有效?