date('W') está devolviendo un número de semana extraño

Tengo este codigo

$week = date('W', strtotime("2013-12-30"));

y $week regresa 01

¿Cómo puede volver ese 01 si estamos en diciembre? ¿Cómo puedo arreglar esto? Como esto está impactando en otra parte del código donde estoy tratando de obtener el lunes de cada semana:

$monday = date("Y-m-d", strtotime("{$year}-W{$week}-1"));

Pero cuando hago eso con esa fecha, regresa el lunes de la semana 01.

preguntado el 14 de febrero de 14 a las 01:02

2 Respuestas

date("W") devuelve el número de semana iso8601. Esa fecha cae en la primera semana del próximo año. Esto puede ocurrir cuando los últimos días de diciembre caen a mitad de semana. Esto también puede suceder cuando diciembre termina tarde en la semana. Los primeros días de enero pueden considerarse parte del año anterior.

Ver Fechas de la semana en Wikipedia para una mejor explicación:

Si el 1 de enero es lunes, martes, miércoles o jueves, es en la semana 01. Si el 1 de enero es viernes, sábado o domingo, es en la semana 52 o 53 del año anterior (no hay semana 00) . El 28 de diciembre siempre es la última semana de su año.

Respondido 14 Feb 14, 01:02

Funciona correctamente.

El "número de semana" a veces es contradictorio. Vea la nota de "Jimmy" para la documentación de la fecha usando W formato: http://www.php.net/manual/en/function.date.php#106974

Respondido 14 Feb 14, 20:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.