【问题标题】:Strange behaviour with mktime producing error in June/Julymktime 在 6 月/7 月产生错误的奇怪行为
【发布时间】:2012-06-06 03:18:32
【问题描述】:

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

//$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,但我很想看看我是否犯了错误,或者这是一个错误。

标签: php mktime


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 2010-12-14
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多