De alguna manera, el valor de retorno de la función date() no tiene sentido aquí. ¿Alguien sabe por qué?
Tal vez me estoy perdiendo algo, pero de acuerdo con el Manual de PHP, lo siguiente no tiene sentido:
echo date('W', strtotime("2021-01-01"));producción:
53 ¿No debería estar el primer día del año en la semana 01? Otras fechas parecen estar rotas también (por ejemplo 2021-01-05 regresando 01 ). Revisé la salida de strtotime() pero la marca de tiempo de UNIX parece ser correcta. ¿Que me estoy perdiendo aqui?
Documento de formato DateTime de PHP:
W - ISO-8601 número de semana del año, semanas a partir del lunes
Definición ISO-8601 de la primera semana del año:
Las semanas comienzan el lunes y terminan el domingo. El año de cada semana es el año gregoriano en el que cae el jueves. La primera semana del año, por lo tanto, siempre contiene el 4 de enero .
devuelve 53 porque el 01/01/2021 está en la semana 53 del año 2020.
Si lo haces
echo date('W', strtotime("2021-01-04")); // first Monday of year 2021 volverá 01
¿No debería estar el primer día del año en la semana 01?
Como dijo @catcon, no.
Para responder a tu comentario,
Esto es correcto, pero ¿tiene un ejemplo de cómo obtener el número de semana correcto para el año calendario? En este caso 1 para 2021-01-01
z = The day of the year (starting from 0) 0 through 365A partir de ahí, obtenga el día del año, reste de 365 o 366, divida por 7, reste de semanas en un año (365/7).