Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/07/2008, 02:55
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: fechas en visual basic 6.0?

O más fácil aún:

Código:
 
Public Function CalculaEdad(ByVal DataIni As Date) As Long
    CalculaEdad = Year(Date - DataIni) - 1900
End Function
Internamente, las fechas se tratan como números (Double, para ser exactos, la parte decimal tiene la hora). Si haces operaciones directamente con fechas, el resultado es el número de días entre ambas. Las fechas se cuentan a partir del 30 de diciembre de 1899, puedes ver la fecha correspondiente a cero días si ejecutas esta instrucción:

Código:
 
format(cdate(0), "dd/MM/yyyy hh:mm:ss")
Por tanto, de ahí que haya que restar 1900 al resultado de Year.

Realmente, la forma óptima de calcularlo sería:

Código:
 
CalculaEdad = Year(Date - DataIni) - Year(0) - 1 
ya que así te curas en salud por si más adelante Microsoft decide que el día 0 corresponde a otra fecha, tienes en cuenta los años bisiestos y haces menos comprobaciones.

Yo había entendido que lo que te interesaba era saber si el día y el mes coincidían, independientemente del número de años. Pues si era eso, esto es mejor aún que lo que te había propuesto al principio:

Código:
 
Public Function MismoDiaYMes(Fecha As Date) as Boolean
    MismoDiaYMes = Format(Date, "ddmm") = Format(Fecha, "ddmm")
End Function

Última edición por Txoco; 07/07/2008 a las 03:05 Razón: Yo entendí... =]