使用strftime明年12月31日的节目

时间:2013-12-11 16:39:16

标签: php timestamp locale strftime

使用此代码,

   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日

1 个答案:

答案 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