¿Cómo obtengo el número de semana actual del año, como PHP date('W')
?
Debe ser el número de semana ISO-8601 del año, semanas que comienzan el lunes.
javascript
date
PeeHaa
fuente
fuente
Respuestas:
Debería poder obtener lo que desea aquí:
http://www.merlyn.demon.co.uk/js-date6.htm#YWD.Un mejor enlace en el mismo sitio es:
Trabajar con semanas.Editar
Aquí hay algo de código basado en los enlaces proporcionados y ese anuncio publicado por Dommer. Se ha probado ligeramente con los resultados en
http://www.merlyn.demon.co.uk/js-date6.htm#YWD. Por favor, pruebe a fondo, no se ofrece garantía.Editar 2017
Hubo un problema con las fechas durante el período en que se observó el horario de verano y los años en que el 1 de enero era el viernes. Solucionado mediante el uso de todos los métodos UTC. Lo siguiente devuelve resultados idénticos a Moment.js.
Las horas se ponen a cero al crear la fecha "UTC".
Versión de prototipo minimizada (solo devuelve el número de semana):
Sección de prueba
En esta sección, puede ingresar cualquier fecha en formato AAAA-MM-DD y verificar que este código proporcione el mismo número de semana que el número de semana ISO de Moment.js (probado durante 50 años de 2000 a 2050).
fuente
d.setMilliseconds(0)
también: seguía mostrando diferentes números de semana para la misma fecha, dependiendo de si usaba una nueva Fecha () o una nueva Fecha ("1/4/2016"). Solo un aviso para otros que podrían experimentar lo mismo.Puede usar la biblioteca momentjs también:
moment().format('W')
fuente
moment().week()
Como se dijo anteriormente pero sin una clase:
fuente
(now.getTime() - onejan.getTime())
evitar problemas de compilación.Accordily http://javascript.about.com/library/blweekyear.htm
fuente
La
Date.format()
biblioteca de Jacob Wright implementa el formato de fecha al estilo de ladate()
función de PHP y admite el número de semana ISO-8601:Puede ser un poco excesivo para solo un número de semana, pero admite el formato de estilo PHP y es bastante útil si va a hacer mucho de esto.
fuente
El siguiente código es independiente de la zona horaria (se usan fechas UTC) y funciona de acuerdo con https://en.wikipedia.org/wiki/ISO_8601
fuente
Encontré útil la clase SimpleDateFormat de Java SE descrita en la especificación de Oracle: http://goo.gl/7MbCh5 . En mi caso en Google Apps Script, funcionó así:
Por ejemplo, en una macro de hoja de cálculo, puede recuperar la zona horaria real del archivo:
fuente
Esto agrega el método "getWeek" a Date.prototype, que devuelve el número de semanas desde el comienzo del año. El argumento define qué día de la semana considerar el primero. Si no se pasa ninguna discusión, el primer día se supone el domingo.
fuente
new Date(Date.UTC(2018,11, 31)).getWeek(1)+1
(el lunes es el primer día de la semana en Alemania).Obtenga el número de semana de cualquier fecha dada
Ejemplo
fuente
I need the week to begin on a Sunday
; Creo que el único cambio necesario es cambiar la función de día de la semana ().getDay()+1
a.getDay()
El siguiente código calcula el número correcto de semana ISO 8601.
date("W")
Coincide con PHP para todas las semanas entre el 1/1/1970 y el 1/1/2100.Fuente: Taco van den Broek
Si no estás interesado en extender prototipos, entonces aquí hay una función:
Uso de la muestra:
fuente
+6 ) % 7
parte. Gracias de un exfoliante!getDay()
comienza un domingo, por lo que si desea que comience el domingo, puede eliminar la corrección:var nDay = date.getDay();
Si ya está en un proyecto angular, podría usarlo
$filter('date')
.Por ejemplo:
fuente
El fragmento de código que funciona bastante bien para mí es este:
Nota:
d
es mi fecha para la que quiero el número de la semana actual.Los
+
convierte los fechas en números (trabajando con Letra de imprenta).fuente
Aquí está mi implementación para calcular el número de semana en JavaScript. corregido por las compensaciones de verano e invierno también. Usé la definición de la semana de este artículo: ISO 8601
Las semanas son de lunes a domingo, y el 4 de enero es siempre la primera semana del año.
para probar utilicé las siguientes pruebas de JavaScript en Qunit
fuente
Esta semana, el número ha sido un verdadero dolor en el a **. La mayoría de los guiones en la red no me funcionaron. Trabajaron la mayor parte del tiempo, pero todos se rompieron en algún momento, especialmente cuando el año cambió y la última semana del año fue repentinamente la primera semana del próximo año, etc. Incluso el filtro de fecha de Angular mostró datos incorrectos (era la primera semana del próximo año, angular dio semana 53).
Nota: ¡Los ejemplos están diseñados para funcionar con semanas europeas (lunes primero)!
getWeek ()
setDay ()
getDayIndex ()
He probado esto y parece estar funcionando muy bien, pero si nota una falla, hágamelo saber.
fuente
Intenté mucho obtener el código más corto para obtener el número ISO semanal.
La variable
date
es necesaria para evitar alterar el originalthis
. Utilicé los valores de retorno desetDate()
ysetMonth()
para prescindirgetTime()
para guardar la longitud del código y utilicé un número exponencial durante milisegundos de un día en lugar de una multiplicación de elementos individuales o un número con cinco ceros.this
es la fecha o el número de milisegundos, el valor de retorno es,String
por ejemplo, "49/2017".fuente
Con Luxon ( https://github.com/moment/luxon ):
fuente
Otra opción basada en la biblioteca: use
d3-time-format
:fuente
La solución más corta para Angular2 + DatePipe, ajustada para ISO-8601:
fuente
fuente