PHP|Mysql一年中53周问题以及某周的起始时间和结束时间

MYSQL 和PHP 的时间都按ISO8601标准来
标有ISO8601标准的函数的含义包括以下几点:

1、对于某一周属于某年(或某月)的认定标准是是否有四天以上属于某年(或某月)。例如,对于某年第一周的认定是此年的第一个星期四所在的周。这保证了这个周至少有4天在这个年份中。这同时意味着一年总的周数必然是52或53。
2、一周的开始是星期一,结束是星期天。分别用1到7的数字表示。
3、可以用2位数表示年内第几个日历星期,再加上一位数表示日历星期内第几天,但日历星期前要加上一个大写字母W,如2004年5月3日可写成2004- W17-1或2004W171。但2004-W011是从2004年1月5日开始的,前几天属于上年的第54个日历星期,每个日历星期从星期一开始,星期 日为第7天。

PHP:

    date("oW",strtotime("2016-01-02"));//201553
    $days = date('w',strtotime("2016-01-02"));//该天是星期几
    $start = $days-1;
    $end = 7-$days;
    $weekstart = date("Y-m-d",strtotime("2016-01-02 -$start day"));//该周的起始日期
    $weekend = date('Y-m-d',strtotime("2016-01-02 +$end day"));//该周的结束日期

    //获取一年有多少周
    $date = new DateTime;
    $date->setISODate(2015,53);
    $weeks = max($date->format('W'),53);

    //获取某周的某天的时间
    echo date("Y-m-d",strtotime('2016-W1-1'));//2016年1周星期一的日期
    echo date("Y-m-d",strtotime('2016-W1-7'));//2016年1周星期日的日期

MYSQL:

SELECT  DATE_FORMAT('2016-01-02','%x%v');//201553