使用此代码,
setlocale(LC_ALL, 'fr_FR');
$end_date_formatted = utf8_encode(strftime("%d %B %G", mktime(0, 0, 0, $month_end, $day_end, $year_end)));
strftime仅在12月31日才返回正确的年份。 它应该显示2013年12月31日,但它显示2014年12月31日
答案 0 :(得分:3)
你是错误地使用mktime()。它是:
int mktime([int $ hour = date(“H”)[,int $ minute = date(“i”)[,int $ second = date(“s”)[,int $ month = date(“n”)[,int $ day = date(“j”) [,int $ year = date(“Y”)[,int $ is_dst = -1]]]]]]])
......你有:
mktime(0, 0, 0, $day_end, $month_end, $year_end)
修正了你可能遇到note in the strftime()
manual page警告的问题:
注意:%G和%V,基于ISO 8601:1988周数,如果编号系统是,则会产生意外(尽管是正确的)结果 没有完全理解。请参阅本手册页中的%V示例。
2013年12月31日属于明年的第一个ISO周。
您可能需要%Y
。