[VBScript] número de semana
Resuelto
Dinheru
Mensajes publicados
1019
Fecha de registro
Estado
Miembro
Última intervención
-
babou -
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 -->
- el mes -->
- el año -->
¿Hay una función del estilo:
¡Gracias de antemano!
--
La vida es como el chocolate, a veces dura y amarga,
a veces caliente y dulce.
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
Más simple que eso, se puede utilizar la versión de formato presente en VBA, que puede ajustarse a la norma ISO.
Ejemplo:
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:
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"
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"
semana = Formato(DD, "ww", vbLunes, vbPrimerEnero1)