Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Fechas : StrTimeToDate
Autor/es:
Juan M Afán de Ribera
José Bengoechea Ibaceta (Chea)
Pregunta : Sé que puedo utilizar la función Cdate() para convertir una cadena que representa horas, tipo "16:25:40" a un dato tipo Fecha/Hora, pero si la cadena representa 24 o más horas me aparece el mensaje "Error 13, no coinciden los tipos..." ¿qué código tendría que utilizar en un caso como éste?
Respuesta : Puedes utilizar esta función StrTimeToDate para ese propósito. Tiene los siguientes

Argumentos

ArgumentoDescripción
sDateRequerido. Una cadena con el formato "horas:minutos:segundos". Las diferentes partes de sDate pueden tener más de 2 cifras, la función lo interpretará correctamente
La función StrTimeToDate devolverá un dato fecha válido.

Ejemplo de uso:
' esto devolverá 02/01/1900 17:00:00
MsgBox StrTimeToDate("89:00:00")

' esto devolverá 25/08/1903 8:00:00 
MsgBox StrTimeToDate("32000:00:00")

' esto devolverá 19/04/1907 16:00:00
MsgBox StrTimeToDate("64000:00:00")

' esto devolverá 24/12/2004 20:00:00
' la fecha exacta donde me encuentro ahora
Debug.Print StrTimeToDate("920300:00:00")
Pega esta función en un módulo estandar
'---------------------------------------------------------
'
' StrTimeToDate
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function StrTimeToDate(sDate As String) As Date
Dim Days As Long
Dim Hours As Double
Dim Minutes As Double
Dim Seconds As Double
Dim vDate As Variant

    vDate = Split(sDate, ":")
    
    Days = Int(Int(vDate(0)) / 24)
    Hours = (Int(vDate(0)) Mod 24) * 0.0416666
    Minutes = Int(vDate(1)) * 0.0006944
    Seconds = Int(vDate(2)) * 0.0000115

    StrTimeToDate = Days + Hours + Minutes + Seconds
    
End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

TimeToString

 

Última actualización: 9/2/2005