Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Detectar el numero de la semana actual

Estas en el tema de Detectar el numero de la semana actual en el foro de Visual Basic clásico en Foros del Web. Amigos tengo que calcular algo y no se me ocurre como, no es tanto un problema de programacion sino de "calculo". Necesito saber, actualmente, en ...
  #1 (permalink)  
Antiguo 08/03/2009, 12:25
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Detectar el numero de la semana actual

Amigos tengo que calcular algo y no se me ocurre como, no es tanto un problema de programacion sino de "calculo".
Necesito saber, actualmente, en que "numero" de semana estamos.

Ej:
- Si estamos en el 1ro de enero entonces me deberia devolver "1".
- Si estamos en el 10 de enero me deberia devolver "2"
- Si estamos en el 31 de enero me deberia devolver "5"

Vean esta imagen de muestra para endenderme mejor, agreguen el http:
kravetes.com/pictures/semana.jpg[/url]

Con datediff estuve probando cosas pero la verdad es que estoy desauseado, busque por google y no encuentro nada

MUCHAS GRACIAS!!!!
Espero me puedan ayudar
  #2 (permalink)  
Antiguo 08/03/2009, 12:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Detectar el numero de la semana actual

Una pregunta, ¿necesitas la semana a la que corresponde en el mes o en el año?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/03/2009, 12:57
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Detectar el numero de la semana actual

Cita:
Iniciado por David el Grande Ver Mensaje
Una pregunta, ¿necesitas la semana a la que corresponde en el mes o en el año?

Necesitaria el numero de la semana, no la del año.
Ejemplo, si es el 1 de enero me va a devolver 1
Si es el 1ro de agosto tmbien me va a devolver 1

Es solo the current week number

gracias!!
  #4 (permalink)  
Antiguo 08/03/2009, 13:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Detectar el numero de la semana actual

Puedes usar DateDiff, sin problema. Por ejemplo, para el 31 de Enero:
Código vb:
Ver original
  1. MsgBox (DateDiff("w", #01/01/2009#, #01/31/2009#) + 1)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 08/03/2009, 13:21
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Detectar el numero de la semana actual

Exacto, con fechas estaticas podria sacarlo facilmente pero como la fecha del ordenador es dinamico (cambia todos los dias jeje) como hare?

Suponete que yo hago MsgBox (DateDiff("w", #01/01/2009#, date) + 1) y date es 1 de agosto, no me va a dar un 1, me va a devolver algo mucho mas alto.

Ahora porque necesito esto...
En mi trabajo tenemos 5 cintas de backup, el backup se hace todos los sabados. Estan rotulados como:
CINTA SEMANA 1
CINTA SEMANA 2
CINTA SEMANA 3
CINTA SEMANA 4
CINTA SEMANA 5

La gente que la tiene que cambiar nunca la cambie, siempre dejan puesta una cualquiera o aveces la misma. Yo estoy armando un programa que actue asi:
"Si hoy es la semana 4 de este mes entonces voy a enviar un mail avisando 'pongan la cinta 4"
"Si hoy es la semana 1 de este mes entonces voy a enviar un mail avisando 'pongan la cinta 1"

Creo que asi quizas se entiende mejor, disculpanme si no me se expresar bien

GRACIAS!!!
  #6 (permalink)  
Antiguo 08/03/2009, 15:01
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Detectar el numero de la semana actual

Alguna idea amigos?
  #7 (permalink)  
Antiguo 08/03/2009, 19:53
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Detectar el numero de la semana actual

Hola, algo asi?

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.     MsgBox NumeroSemana(DateValue("01/08/2009"))
  3. End Sub
  4.  
  5. Function NumeroSemana(pFecha As Date) As Integer
  6.     Dim sFecha As String
  7.     sFecha = "01/" & Month(pFecha) & "/" & Year(pFecha)
  8.     NumeroSemana = DatePart("ww", pFecha) - DatePart("ww", DateValue(sFecha)) + 1
  9. End Function

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #8 (permalink)  
Antiguo 09/03/2009, 05:02
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Detectar el numero de la semana actual

Hola, el ejemplo que te pusieron antes creo que no resuelve el problema ya que no cuenta las semanas completas del mes. p.e. 01/08/2009 devuelve 1 cuando debería devolver la última semana del mes anterior ya que ése día es sábado.
Y aunque así fuera, si pones 30/08/2009 devuelve la semana 6 (¿?).

Prueba con esta función:

Código Visual Basic:
Ver original
  1. Function NumeroSemanaMes(ByVal dFecha As Date) As Integer
  2. Dim iSemanaActual As Integer, iSemanaAnterior As Integer, iRes As Integer
  3. ' calculamos el número de semana del año de la fecha actual
  4. iSemanaActual = DatePart("ww", dFecha, vbMonday, vbFirstFourDays)
  5. ' calculamos el último día del mes anterior y su número de semana
  6. dFecha = DateSerial(Year(dFecha), Month(dFecha), 0)
  7. iSemanaAnterior = DatePart("ww", dFecha, vbMonday, vbFirstFourDays)
  8. ' por diferencia, sacamos la semana actual del mes en curso
  9. iRes = iSemanaActual - iSemanaAnterior
  10. ' si es cero es que la semana es la última del mes anterior, repetimos el ciclo
  11. If iRes = 0 Then
  12.     ' la variable dFecha ahora es el último día del mes anterior
  13.     iSemanaActual = DatePart("ww", dFecha, vbMonday, vbFirstFourDays)
  14.     dFecha = DateSerial(Year(dFecha), Month(dFecha), 0)
  15.     iSemanaAnterior = DatePart("ww", dFecha, vbMonday, vbFirstFourDays)
  16.     iRes = iSemanaActual - iSemanaAnterior
  17. End If
  18. NumeroSemanaMes = iRes
  19. End Function

Para llamarla, p.e. desde un CommandButton:

Código Visual Basic:
Ver original
  1. Private Sub Command1_Click()
  2. MsgBox NumeroSemanaMes("01/08/2009")
  3. 'Si es la fecha actual: MsgBox NumeroSemanaMes(Date)
  4. End Sub

Saludos
  #9 (permalink)  
Antiguo 09/03/2009, 16:30
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Detectar el numero de la semana actual

Mensaje repetido

Última edición por german_martin; 09/03/2009 a las 16:32 Razón: Repetido
  #10 (permalink)  
Antiguo 09/03/2009, 16:31
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Detectar el numero de la semana actual

gracias seba y avellaneda!!

lo unico raro es que si se ejecuta la primer semana de cualquier año devuelve el valor total de las semanas, por ej. 2/1/2001 devuelve 51

:D:D gracias!!
  #11 (permalink)  
Antiguo 09/03/2009, 16:41
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Detectar el numero de la semana actual

Cita:
Iniciado por german_martin Ver Mensaje
gracias seba y avellaneda!!

lo unico raro es que si se ejecuta la primer semana de cualquier año devuelve el valor total de las semanas, por ej. 2/1/2001 devuelve 51

:D:D gracias!!
Efectivamente, como indiqué anteriormente si la semana no es completa dentro del mismo mes, devuelve la última semana del mes o año anterior.
A mi me parece lo mas lógico, si no es así indicarlo.
  #12 (permalink)  
Antiguo 09/03/2009, 20:09
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Detectar el numero de la semana actual

el codigo que puse es lo mismo que ves en cualquier calendario, o sea las lineas del calendario...no cuenta como dijeron al semanas del mes anterior, se vuelve a 0 cuando empieza el mes...
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:13.