Página 1 de 1

contador de dias

Publicado: 18 Feb 2010, 22:38
por Lucky
Hola, me gustaria hacer un contador para determinar cuando cumple cierto plazo, tanto en dias habiles como en dias laborales, la duda esta en como elimino los sabados y domingos en el contador, gracias.

Re: contador de dias

Publicado: 18 Feb 2010, 23:16
por BasicOs
pe me ocurre, que Puedes hacer un bucle donde te compruebe con un contador los valores de iWeekday=1 domingo y 7 si es sabado y se los reste, no obstante seguro que encuentras algo para Visual Basic o Php ya hecho y es muy facil pasar la fórmula a autoit. :smt025
Salu2:)

Código: Seleccionar todo

$iWeekday = _DateToDayOfWeek (@YEAR, @MON, @MDAY) 

Re: contador de dias

Publicado: 19 Feb 2010, 00:05
por Lucky
gracias, probando...

Re: contador de dias

Publicado: 19 Feb 2010, 17:48
por Lucky

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Administrador\Mis documentos\Contador.kxf
$Form1 = GUICreate("Contador de dias", 633, 384, 192, 124)
$Group1 = GUICtrlCreateGroup("Calendario", 8, 8, 617, 369)
$MonthCal1 = GUICtrlCreateMonthCal(@YEAR & "/" & @MON & "/" & @MDAY, 24, 24, 193, 161)
$Label1 = GUICtrlCreateLabel("Dias de plazo:", 240, 32, 71, 17)
$Input1 = GUICtrlCreateInput("0", 360, 28, 49, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
$Label2 = GUICtrlCreateLabel("Dias extras festivos:", 240, 64, 98, 17)
$Input2 = GUICtrlCreateInput("0", 359, 60, 49, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
$Group2 = GUICtrlCreateGroup("Resultado", 24, 200, 593, 113)
$Label3 = GUICtrlCreateLabel("Fecha limite para dias habiles:", 48, 224, 145, 17)
$Label4 = GUICtrlCreateLabel("Fecha limite para dias laborables:", 48, 246, 160, 17)
$Label5 = GUICtrlCreateLabel("Dias que faltan/exceden el plazo:", 48, 268, 160, 17)
$Input3 = GUICtrlCreateInput("Sin establecer", 224, 220, 385, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
$Input4 = GUICtrlCreateInput("Sin establecer", 224, 242, 385, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
$Input5 = GUICtrlCreateInput("Sin establecer", 224, 264, 385, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Calcular", 24, 320, 177, 49, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Acerca de", 231, 320, 177, 49, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Salir", 440, 320, 177, 49, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
	$nMsg = GUIGetMsg()
	$Contador=0
Switch $nMsg
Case $Button1
$fecha=GUICtrlRead ( $MonthCal1 )
$fechaH=GUICtrlRead ( $MonthCal1 )
$Hoy= @YEAR & "/" & @MON & "/" & @MDAY
$diasdefiesta=GUICtrlRead ( $Input2 )
$Plazo=GUICtrlRead ( $Input1 )
$Plazocompleto=$Plazo+$diasdefiesta
While 1
	If $Contador<$Plazo then
	$fechaH = _DateAdd( 'd',1, $fechaH)
	$HAno=StringMid ($fechaH, 1, 4 )
    $HMes=StringMid ($fechaH, 6, 2 )
    $HDia=StringMid ($fechaH, 9, 2 )
	$Diadelasemana=_DateToDayOfWeek($HAno, $HMes, $HDia)
	$Contador=$Contador+1
Else
	ExitLoop
EndIf
WEnd
GUICtrlSetData($Input3, $HDia & "/" & $HMes & "/" & $HAno )
$Contador=0
While 1
	If $Contador<$Plazocompleto then
	$fecha = _DateAdd( 'd',1, $fecha)
	$Ano=StringMid ($fecha, 1, 4 )
    $Mes=StringMid ($fecha, 6, 2 )
    $Dia=StringMid ($fecha, 9, 2 )
	$Diadelasemana=_DateToDayOfWeek($Ano, $Mes, $Dia)
	if $Diadelasemana=7 Or $Diadelasemana=1 Then
	Else
		$Contador=$Contador+1
	EndIf
Else
	ExitLoop
EndIf
WEnd
GUICtrlSetData($Input4, $Dia & "/" & $Mes & "/" & $Ano )
$Habiles=_DateDiff('d',$hoy, $fechaH)
$Laborables=_DateDiff('d',$hoy, $fecha)
GUICtrlSetData($Input5, $Habiles & " Dias para la fecha de habiles o " & $Laborables & " para la fecha de laborables." )
Case $Button3
			Exit
Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
	WEnd
Pues asi va quedando para quien le interese o quiera mejorar algo.

Re: contador de dias

Publicado: 19 Feb 2010, 18:17
por BasicOs
Muy bueno el programa. Te faltaría añadir un string conteniendo todos los días laborales en tu comunidad o región, y comprobar en el else si es uno de estos... al ver si está contenido dentro del string anterior (o también haciendo un array etc...). También te puedes conectar a una web que los incluya y bajartelos con inetget.... rellenando el string desde allí, etc..
Salu2:)

Re: contador de dias

Publicado: 19 Feb 2010, 18:34
por Lucky
Creo que eso es un poco mas complicado, aunque solo necesitaria los dias festivos nacionales.

Re: contador de dias

Publicado: 20 Feb 2010, 02:05
por BasicOs
Lucky escribió:Creo que eso es un poco mas complicado, aunque solo necesitaria los dias festivos nacionales.
No hay nada complicado, posiblemente con una función para bajar el html, y un string between .. o string split ... puedes tener la info de los días...
Salu2:)