Recientemente me encontré con un gran problema, ya que tengo un sistema que les paga semanalmente a los clientes.Numeración de la semana ISO-8601 frente a la numeración de "Outlook" en PHP
Como todos sabemos, un año tiene 52 semanas, y hay estándares para ello. Estoy usando PHP aka date ('W') para obtener el número de semana de una fecha, que calcula eso de acuerdo con el estándar ISO-8601.
Aquí están algunas referencias:
Pero aquí está el problema: el año 2009 tiene 53 semanas. Parece que a través del calendario gregoriano dentro de 400 años hay 71 años que tienen 53 semanas. Eso es algo que no sabía, y probablemente muchos no lo hicieron.
Según Wikipedia:
2009-12-31 es 2009-W53-4 (ISO año 2009 tiene 53 semanas, que se extienden al año gregoriano de 2009, que comienza y termina con el jueves en ambos extremos con tres días).
y la función de fecha en PHP lo respeta totalmente.
Si mira en MS Outlook y muestra el día de la semana en la vista del calendario, aparecerá 52 semanas considerando el 28 DIC 2009 al 03 ENE 2010 semana 1. ¿Es este otro estándar? El estándar de los Estados Unidos o algo así?
Si es así, ¿por qué PHP no puede soportarlo? ¿Alguien hizo una función que apoyó esto?
¿Es correcto tener 53 semanas? Tenemos clientes europeos y estadounidenses.
Interesante pregunta. Noté que Outlook tiene una semana 53 en 2011. Parece que está definiendo "semana 1" como la primera semana que contiene el 1 de enero. Dado que las semanas pueden comenzar el domingo o el lunes según una configuración, en realidad podría ser diferente para diferentes usuarios. –
Acabo de intentarlo. Outlook le permitirá elegir cualquier día para ser el día de inicio de la semana, y la numeración de la semana simplemente comienza con la semana que contiene el 1 de enero. Por lo tanto, hay siete esquemas de numeración diferentes disponibles en Outlook. –