Cantidad de días entre dos fechas (Ayuda)

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Cantidad de días entre dos fechas (Ayuda)

Mensaje por melvinhn »

Ante todo busque en el foro
http://www.emesn.com/autoitforum/viewto ... echa#p8424

Quiero saber de que manera saco la cantidad de días entre dos fechas

he utilizado el siguiente scrip pensando en que era asi de facil

Código: Seleccionar todo

#include <Date.au3>
$FechaInicio = "2012/25/02"
$FechaFinal = "2013/28/02"
ConsoleWrite($FechaInicio-$FechaFinal)
ya que en Microsoft Excel si se puede de esa manera
Fechas
Fechas
suma.png (1.42 KiB) Visto 1370 veces
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Cantidad de días entre dos fechas (Ayuda)

Mensaje por arkcrew »

Bueno, lo que se me ha ocurrido y lo que he encontrado en la ayuda

Ayuda:

Código: Seleccionar todo

#include <Date.au3>

$FechaInicio = "2012/01/02 00:00:00"
$FechaFinal =  "2012/01/10 00:00:00"

Local $iDateCalc = _DateDiff('D', $FechaInicio, $FechaFinal)
MsgBox(4096, "", "Numero de días entre cada fecha: " & $iDateCalc & @lf & "error: "&@error)
Esto al parecer solo funciona entre perdiodos de tiempo pasado (años atras) y la fecha más reciente que soporta es el día actual, si pruebas con 2013 te tira error, al menos a mi si,

Otra cosa que puedes probar, es:

Código: Seleccionar todo

$FechaInicio = "2012/01/02"
$FechaFinal =  "2013/01/10"

$fechaI = StringSplit($FechaInicio,"/")
$anoI = $fechaI[1]
$mesI = $fechaI[2]
$diaI = $fechaI[3]

$fechaF = StringSplit($FechaFinal,"/")
$anoF = $fechaF[1]
$mesF = $fechaF[2]
$diaF = $fechaF[3]

$dif = ($anoF-$anoI) & " años " & ($mesF-$mesI) & " meses y " & ($diaF-$diaI) & " dias"

MsgBox(0,"",$dif)
Esto como ves es más manual y más cutrecillo pero bueno, el caso es que funcionar funciona XD

Saludos!
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Re: Cantidad de días entre dos fechas (Ayuda)

Mensaje por melvinhn »

Mucha gracias por responder tan pronto

el primer ejemplo me resolvio el problema

el de la ayuda del programa estaba un poco confuso...

gracias

lo deje de la siguiente manera y no me tira error
simplemente si doy una fecha mayor inicial que la final me la cambia a negativo pero eso este bien siempre

Código: Seleccionar todo

#include <Date.au3>

$FechaInicio = "1984/02/12"
$FechaFinal =  _NowCalc()

Local $Diferencia = _DateDiff('D', $FechaInicio, $FechaFinal)
MsgBox(4096, "", "Numero de días entre cada fecha: "&$Diferencia)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Cantidad de días entre dos fechas (Ayuda)

Mensaje por Ximorro »

Viendo aquel post efectivamente se veía que se usaba _DateDiff(), al que le puedes decir si quieres la diferencia en días, meses, años, etc...

También funciona con fechas futuras, mira Arckrew cómo la pones que igual has introducido un error al poner el año.
Por cierto, lo de poner 00:00:00 en la fecha es opcional, así que si no manejáis horas lo podéis quitar.

Lo de las fechas negativas es porque pones de fecha final una anterior a la inicial, así que la resta sale negativa, igual que cuando restas números normales.
Yo uso eso en el programa que enlazas al principio, si te fijas cuando la fecha inicial es anterior pone "HAN PASADO..." pero cambia la fecha inicial a algo posterior a la final y verás que el texto cambia a "FALTAN ....", porque son días que faltan para llegar a esa fecha.
Yo lo hago mirando el orden de las fechas, también se podría hacer haciendo la resta directamente y ver el signo.

Si te da igual el signo puedes usar la función matemática ABS(), por ejemplo:
Abs(_DateDiff('D', "2000/01/01", "1999/01/01"))
Abs(_DateDiff('D', "1999/01/01", "2000/01/01"))

dan lo mismo, si no pones Abs() el primero será negativo.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder