¿Dime cómo puedo obtener el último número de semanas en un año?PHP - obtenga el número de la semana pasada en el año
Respuesta
Sustituir 2010 por el año que desee y Europa/Berlín, con su zona horaria:
<?php
date_default_timezone_set('Europe/Berlin');
echo gmdate("W", strtotime("31 December 2010"));
?>
Usted obtendrá uno de los valores 01
, 52
o 53
.
Sólo por diversión (Demo):
<?php
date_default_timezone_set('Europe/Berlin');
echo "ISO-8601 week number of year, weeks starting on Monday, of 31 December:\n\n";
for ($year = 1900; $year < 2100; $year++) {
$date = strtotime("31 December $year");
echo "$year => ", gmdate("W", $date), "\n";
}
?>
Salida:
ISO-8601 week number of year, weeks starting on Monday, of 31 December:
1900 => 01
1901 => 01
1902 => 01
1903 => 53
1904 => 52
1905 => 52
1906 => 52
1907 => 01
1908 => 53
1909 => 52
1910 => 52
1911 => 52
1912 => 01
1913 => 01
1914 => 53
1915 => 52
1916 => 52
1917 => 52
1918 => 01
1919 => 01
1920 => 53
1921 => 52
1922 => 52
1923 => 52
1924 => 01
1925 => 53
1926 => 52
1927 => 52
1928 => 52
1929 => 01
1930 => 01
1931 => 53
1932 => 52
1933 => 52
1934 => 52
1935 => 01
1936 => 53
1937 => 52
1938 => 52
1939 => 52
1940 => 01
1941 => 01
1942 => 53
1943 => 52
1944 => 52
1945 => 52
1946 => 01
1947 => 01
1948 => 53
1949 => 52
1950 => 52
1951 => 52
1952 => 01
1953 => 53
1954 => 52
1955 => 52
1956 => 52
1957 => 01
1958 => 01
1959 => 53
1960 => 52
1961 => 52
1962 => 52
1963 => 01
1964 => 53
1965 => 52
1966 => 52
1967 => 52
1968 => 01
1969 => 01
1970 => 53
1971 => 52
1972 => 52
1973 => 52
1974 => 01
1975 => 01
1976 => 53
1977 => 52
1978 => 52
1979 => 52
1980 => 01
1981 => 53
1982 => 52
1983 => 52
1984 => 52
1985 => 01
1986 => 01
1987 => 53
1988 => 52
1989 => 52
1990 => 52
1991 => 01
1992 => 53
1993 => 52
1994 => 52
1995 => 52
1996 => 01
1997 => 01
1998 => 53
1999 => 52
2000 => 52
2001 => 52
2002 => 01
2003 => 01
2004 => 53
2005 => 52
2006 => 52
2007 => 52
2008 => 01
2009 => 53
2010 => 52
2011 => 52
2012 => 52
2013 => 01
2014 => 01
2015 => 53
2016 => 52
2017 => 52
2018 => 52
2019 => 01
2020 => 53
2021 => 52
2022 => 52
2023 => 52
2024 => 01
2025 => 01
2026 => 53
2027 => 52
2028 => 52
2029 => 52
2030 => 01
2031 => 01
2032 => 53
2033 => 52
2034 => 52
2035 => 52
2036 => 01
2037 => 53
2038 => 01
2039 => 01
2040 => 01
2041 => 01
2042 => 01
2043 => 01
2044 => 01
2045 => 01
2046 => 01
2047 => 01
2048 => 01
2049 => 01
2050 => 01
2051 => 01
2052 => 01
2053 => 01
2054 => 01
2055 => 01
2056 => 01
2057 => 01
2058 => 01
2059 => 01
2060 => 01
2061 => 01
2062 => 01
2063 => 01
2064 => 01
2065 => 01
2066 => 01
2067 => 01
2068 => 01
2069 => 01
2070 => 01
2071 => 01
2072 => 01
2073 => 01
2074 => 01
2075 => 01
2076 => 01
2077 => 01
2078 => 01
2079 => 01
2080 => 01
2081 => 01
2082 => 01
2083 => 01
2084 => 01
2085 => 01
2086 => 01
2087 => 01
2088 => 01
2089 => 01
2090 => 01
2091 => 01
2092 => 01
2093 => 01
2094 => 01
2095 => 01
2096 => 01
2097 => 01
2098 => 01
2099 => 01
Si se preguntaban cómo obtener el número de semanas que termine el año, esto lo haría :
<?php
$year = date('Y');
$week_count = date('W', strtotime($year . '-12-31'));
if ($week_count == '01')
{
$week_count = date('W', strtotime($year . '-12-24'));
}
echo ($week_count - date('W'));
echo ' weeks left in ' . date('Y') . '!';
?>
Editar: Se agregó lógica para compensar el '01' devuelto por la fecha ('W');
Eso podría no dar un resultado esperado, porque como se indica en los comentarios de la pregunta, la última semana puede ser '01'. En tal caso, su código arrojaría un número negativo de semanas en el año. Debería convertir programáticamente el caso marginal '01' (agregando 1 a la penúltima semana). –
@paul Acabo de editar el código, bastante seguro de que compensaría correctamente el '01' devuelto ...pensándolo bien, todavía se caería cuando la semana actual vuelve a 01 también ... tan cerca;) – joshtronic
Es algo parecido a eso. :) –
function getIsoWeeksInYear($year) {
$date = new DateTime;
$date->setISODate($year, 53);
return ($date->format("W") === "53" ? 53 : 52);
}
El formato de fecha o
da el año númeroISO-8601. Podemos usar esto y el hecho de que las fechas "no válidas" se vuelven automáticamente para hacer las válidas (2011-02-31
da 2011-03-03
), para determinar si un año determinado tiene 53 semanas. Si no es así, debe tener 52.
Consulte también, date format characters y DateTime::setISODate()
páginas de manual.
agradable y simple – Gordon
En ISO-8601 especificación, dice que 28 de diciembre es siempre en la última semana de su año.
Basado en eso, puede crear simplemente esa fecha, y ver en qué semana es:
$dt = new DateTime('December 28th');
echo $dt->format('W'); # 52
$dt = new DateTime('December 28th, 2009');
echo $dt->format('W'); # 53
... o si está utilizando date()
y strtotime()
funciones: echo date('W', strtotime('December 28th')); # 52
echo getLastWeekOfYear(2015);
function getLastWeekOfYear($year) {
$date = new DateTime();
return date('W', strtotime(date('Y-m-d', strtotime($date->setISODate($year, 1, "1")->format('Y-m-d') . "-1day"))));
}
- 1. la semana pasada, esta semana (php)
- 2. Obtener el número de semana (en el año) a partir de una fecha PHP
- 3. ¿Cómo obtengo el número de mes del año y el número de semana en C#?
- 4. Obteniendo el año y la semana del año desde la fecha de PHP() cuando la semana abarca dos años
- 5. cómo conseguir el primer día y el último día de la semana y el año número
- 6. de año y semana hasta la fecha en php
- 7. Número de semana de un año en dateformat
- 8. Hallazgo de la semana, el mes y el año
- 9. Grupo de semana del año (Número de la semana) en LINQ to SQL
- 10. Problema al extraer el número de año y semana de la cadena en PSQL
- 11. Mostrar solo publicaciones creadas la semana pasada
- 12. calcule el mes del año y el número de semana en excel
- 13. Contando el número de eventos por semana en PHP
- 14. Obtenga el año de boost ptime
- 15. Obtenga el primer día de la semana en SQL Server
- 16. Perl: dado el número de año y semana, ¿cómo puedo obtener la primera cita de esa semana?
- 17. Obtenga el año de la marca de tiempo sql
- 18. php - encuentra la fecha para el mismo día de la semana del año pasado
- 19. Obtenga el año de 2 dígitos en T-SQL
- 20. ¿Cómo se analiza estrictamente una fecha con solo un año y un número de semana cuando el primer día de esta semana es el año anterior?
- 21. ¿Cómo obtener el número de semana en Python?
- 22. ¿Cómo convertir el número de semana en fecha?
- 23. ¿Cómo obtener el número de año con PHP?
- 24. cómo obtener la fecha de la semana pasada (martes o cualquier otro día) en php?
- 25. ¿Cómo obtener el primer día de un número de semana determinado en PHP (multiplataforma)?
- 26. En .net, conociendo el número de semana ¿cómo puedo obtener la fecha de la semana?
- 27. ¿Cómo obtener el último día de la semana pasada en sql?
- 28. Conocer el número de parámetros de una función pasada (erlang)
- 29. Obtenga el año/mes/día de una fecha y hora en php?
- 30. Obtenga el número de filas en la tabla usando SQLAlchemy
Lo EXAC ¿A qué te refieres con eso? Por favor sé más específico. –
@Andy E: No necesariamente ... el número de la última semana podría ser 53. La definición ISO-8601 de la semana 01 es la semana del primer jueves. – Powerlord
Tuve un ejemplo en mi comentario anterior, pero creo que fue incorrecto, así que lo eliminé. Para resumir: desde 52 semanas son 364 días, y un año es 365-366 días, cada pocos años terminas con una semana extra. – Powerlord