[VBScript] número de semana

Resuelto
Dinheru Mensajes publicados 1019 Fecha de registro   Estado Miembro Última intervención   -  
 babou -
¡Hola a todos y todas! ¡Soy yo de nuevo! ^^

Esta vez quisiera saber si existe una función en VBScript que devuelva el número de la semana actual.
Ya he encontrado para:
- el día -->
 dia = day(now)

- el mes -->
 mes = month(now)

- el año -->
 año = year(now)


¿Hay una función del estilo:
 semana=week(now)
(¡Pero eso no funciona!)

¡Gracias de antemano!
--
La vida es como el chocolate, a veces dura y amarga,
a veces caliente y dulce.

8 respuestas

Teuk
 
Más simple que eso, se puede utilizar la versión de formato presente en VBA, que puede ajustarse a la norma ISO.
Ejemplo:

Dim datetest, semana datetest = #23/7/2010# semana = Format(datetest, "ww", vbMonday, vbFirstFourDays)


En este caso, Format devuelve 29, que es la respuesta correcta.
El argumento vbMonday define el primer día de la semana (según la norma, lunes, pero domingo por defecto para VBA si se omite el argumento) y vbFirstFourDays define que la semana n°1 es la primera semana que contiene al menos 4 días (es decir, la semana que contiene el primer jueves del año, es equivalente; si se omite el argumento, VBA considera que es la semana del 1 de enero, lo que no siempre es exacto)

Se pueden usar variables para definir la fecha, utilizando la función CDate:

Dim dia, mes, año Dim datetest, semana dia = 23 mes = 7 año = 2010 datetest = CDate(dia & "/" & mes & "/" & año) semana = Format(datetest, "ww", vbMonday, vbFirstFourDays)


También se pueden usar solo los 2 últimos dígitos del año, VBA considera que el año está comprendido entre 1930 y 2029

Nota aparte, la función Format permite formatear una fecha (entre otras cosas), es el argumento "ww" el que hace que devuelva el número de la semana. Al reemplazarlo por ejemplo con "dddd d mmmm yyyy", la función devuelve en nuestro ejemplo "viernes 32 de julio de 2010"
36
babou
 
Solo hay que cambiar el último argumento:
semana = Formato(DD, "ww", vbLunes, vbPrimerEnero1)
0