strftime()和mktime()输出错误

时间:2013-07-12 09:06:33

标签: php strftime mktime

我的小功能:

setlocale(LC_TIME, 'de_DE');
$date_array = array($blog_month,$blog_year);
var_dump($date_array); 
$title_date = strftime("%B %Y", mktime(0,0,0, $date_array[0], 0, $date_array[1]));
echo $title_date;

var_dump给出

array(2) {
  [0]=> int(5)
  [1]=> int(2013)
}

所以数组是正确的。 但$title_date总是错的。在这种特殊情况下,回声显示April 2013。 我想mktime出了点问题,因为我检查了它给出的timestamp,它总是错误的。

我确实阅读过PHP文档,这应该是可行的,不知道什么是错的。 有什么想法或建议吗?

最好的问候 denym

1 个答案:

答案 0 :(得分:1)

如果无法设置区域设置,setlocale函数将返回false,并且您忽略了返回值。在这种情况下,调用必须失败(可能是因为未安装de_DE语言环境?)并且strftime仍然以英语格式化日期。

另一方面,第0天对应于“last day of the month before”。因此mktime将于4月30日返回,而不是5月1日,如果这是您所期望的。 5月1日使用:

mktime(0,0,0, $date_array[0], 1, $date_array[1])