1

这就是我的小功能:

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 文档,这应该可以工作,不知道出了什么问题。有什么想法或建议吗?

最好的问候否认

4

1 回答 1

1

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

另一方面,第0天对应于“前一个月的最后一天”。4 月 30 日返回也是如此mktime,如果这是您所期望的,而不是 5 月 1 日。对于 5 月 1 日,请使用:

mktime(0,0,0, $date_array[0], 1, $date_array[1])
于 2013-07-12T09:21:42.450 回答