Obtener Semana del mes

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Obtener Semana del mes

Mensaje por nelson13 »

hola estoy buscando la forma de poder obtener la semana del mes (en base al dia actual).
busque por todos lados y no encuentro nada.
tampoco encontre macros del tipo @wday que cumplan esta funcion. cualquier info sera areciada.
gracias!
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Obtener Semana del mes

Mensaje por avechuche »

Si entendi, es algo facil, del 1 al 7 inclusive es la primer semana, del 8 al 14 es la segunda y asi

Código: Seleccionar todo

Switch @MDAY

	Case 1 to 7

		ConsoleWrite("Primer semana" & @CRLF)

	Case 8 to 14

		ConsoleWrite("Segunda semana" & @CRLF)

	Case 15 to 21

		ConsoleWrite("Tercer semana" & @CRLF)

	Case 22 to 28

		ConsoleWrite("Cuarta semana" & @CRLF)

	Case Else

		ConsoleWrite("Quinta semana" & @CRLF)

EndSwitch
No se si es lo que buscas.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Obtener Semana del mes

Mensaje por Chefito »

Tengo la impresión que no es eso lo que busca.
Todo lo relacionado con las fechas puedes encontrarlo en la ayuda, en la udf date. Son las funciones que empiezan por _date . Míralas.
Si lo que quieres es saber el número de la semana según el número de día, como si todos los meses empezasen por lunes, una forma fácil podría ser esta:

Código: Seleccionar todo

Local $iDateCalc = Ceiling(@MDAY/7)
MsgBox(4096, "", "Número de la semana del mes actual: " & $iDateCalc)
Pero como he dicho al principio, no creo que sea esto. Supongo que lo que el quiere es saber el número real de semana del mes en que cae ese día. Un mes puede empezar por cualquier día de la semana. En esta situación te descuadra todos los cálculos. Hay que hacerlos nuevos y un poquito más enrevesados....no mucho :smt002 .

Código: Seleccionar todo

#include <Date.au3>

Local $iWeekday = _DateToDayOfWeek(@YEAR, @MON, 1)	;averiguo el día en que empieza el mes
;tengo que corregir lo anterior, ya que está en formato americano, o sea que la semana empieza por domingo no por lunes.
If $iWeekday=1 Then
	$iWeekday=6
Else
	$iWeekday-=2
EndIf
Local $iDateCalc = Ceiling((@MDAY+$iWeekday)/7)
MsgBox(4096, "", "Número de la semana del mes actual: " & $iDateCalc)
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Obtener Semana del mes

Mensaje por nelson13 »

Chefito escribió:Tengo la impresión que no es eso lo que busca.
Todo lo relacionado con las fechas puedes encontrarlo en la ayuda, en la udf date. Son las funciones que empiezan por _date . Míralas.
Si lo que quieres es saber el número de la semana según el número de día, como si todos los meses empezasen por lunes, una forma fácil podría ser esta:

Código: Seleccionar todo

Local $iDateCalc = Ceiling(@MDAY/7)
MsgBox(4096, "", "Número de la semana del mes actual: " & $iDateCalc)
Pero como he dicho al principio, no creo que sea esto. Supongo que lo que el quiere es saber el número real de semana del mes en que cae ese día. Un mes puede empezar por cualquier día de la semana. En esta situación te descuadra todos los cálculos. Hay que hacerlos nuevos y un poquito más enrevesados....no mucho :smt002 .

Código: Seleccionar todo

#include <Date.au3>

Local $iWeekday = _DateToDayOfWeek(@YEAR, @MON, 1)	;averiguo el día en que empieza el mes
;tengo que corregir lo anterior, ya que está en formato americano, o sea que la semana empieza por domingo no por lunes.
If $iWeekday=1 Then
	$iWeekday=6
Else
	$iWeekday-=2
EndIf
Local $iDateCalc = Ceiling((@MDAY+$iWeekday)/7)
MsgBox(4096, "", "Número de la semana del mes actual: " & $iDateCalc)
Saludos.
Mil Gracias :smt038 ! me salvastes la vida Chefito!, es justo lo que buscaba.
@avechuche: gracias igual :smt001 , pero ese codigo ya lo habia encontrado en los foros de autoit en ingles y justamente como dice chefito no es exacto.
Me encanta pertenecer a esta gran comunidad de desarrolladores!, saludos!
Responder