From jguardon, 1 Year ago, written in GAMBAS.
Embed
  1. Public Sub Main()
  2.  
  3.   Dim numsemana As Integer = 50 ' valores a buscar
  4.   Dim anio As Integer = 2015    ' valores a buscar
  5.   Dim wkday, i As Integer
  6.   Dim nombredias As String[] = ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"]
  7.   Dim inicio, semanabuscada As Date
  8.  
  9.   ' Obtenemos el primer día de la semana del año
  10.   wkday = WeekDay(Date(anio, 1, 1))
  11.  
  12.   'Print wkday
  13.  
  14.   ' resulta el número de día de la semana en la que
  15.   ' comienza el año. Lunes=1, Martes=2, etc
  16.  
  17.   'NOTA: dependiendo de cómo caiga el primer día del año
  18.   'dentro de la semana, se contará como semana 0 ó 1. Como regla
  19.   'general, de lunes a jueves es 1, de viernes a domingo es 0.
  20.  
  21.   If wkday <= 4 Then
  22.     ' si es igual a jueves o antes, empezamos a contar a partir del anterior lunes
  23.     inicio = DateAdd(Date(anio, 1, 1), gb.Day, - (wkday - 1))
  24.     'Print inicio
  25.  
  26.   Else
  27.     ' en caso contrario, buscamos el lunes de la semana siguiente
  28.     inicio = DateAdd(Date(anio, 1, 1), gb.Day, (8 - wkday))
  29.     'Print  inicio
  30.  
  31.   'Sumamos a esta fecha el número de semana buscada multiplicado
  32.   'por 7 días que tiene cada semana sin incluir la semana actual
  33.  
  34.   semanabuscada = DateAdd(inicio, gb.Day, (numsemana - 1) * 7)
  35.  
  36.   'Print semanabuscada
  37.  
  38.   For i = 0 To 6
  39.     Print nombredias[i] & "\t" & Format(DateAdd(semanabuscada, gb.Day, i), "dd-mm-yyyy")
  40.   Next
  41.  
  42.