SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: mutanab en Jueves 20 de Noviembre de 2003, 16:28
-
¿Existe alguna funcion a la cual le paso el dia del año actual y me lo convierta en fecha?
Es decir le digo 278 y me devuelve 05/10/2003.
Muchas gracias
-
Hola mutanab.
Ahora mismo no sé si existe tal función en vb, pero puedes crear tú una de este estilo:
Public Function CvtDiasAFecha(Byval Dias as Integer) As String
Dim intMes As Integer, intDia As Integer
Dim varDiasMes() As Variant
varDiasMes = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
If DateDiff("d", "1/2/" & Year(Now), "1/3/" & Year(Now)) = 29 Then
varDiasMes(1) = 29
intDia = 366
Else
intDia = 365
End If
If Dias > intDia Then Exit Function
Dim int1 As Integer
For int1 = 0 To 11
If Dias <= varDiasMes(int1) Then
intMes = int1 + 1
intDia = Dias
Exit For
Else
Dias = Dias - varDiasMes(int1)
End If
Next int1
CvtDiasAFecha = intDia & "/" & intMes & "/" & Year(Now)
End Function
Simple, ¿no? Puedes observar que la función funciona sólo para el año actual sin aceptar más de 365 ó 366 días segun el año sea o no bisiesto. Si quieres que pueda calcular fechas de otros años, ya sabes... te tendrás que currar algo más la función, que no se puede pedir todo hecho.
De todas formas, si te enterás de si ya existe alguna función para hacer esto, no dudes en hacerlo saber al foro.
Suerte.
-
Muchas gracias, es similar a lo que yo tengo. Simplemente queria ahorrar lineas.
Os paso el caso contrario:
Function CvtFechaDias(Fecha)
Dim Ano
Dim Dia
Dim Mes
Dim varDiasMes
Ano = Year(Fecha)
Mes = Month(Fecha)
Dia = Day(Fecha)
If Ano Mod 4 = 0 Then 'Año bisiesto
varDiasMes = Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Else
varDiasMes = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
End If
For i = 0 To Mes - 2
NumDias = NumDias + varDiasMes(i)
Next i
CvtFechaDias = NumDias + Dia
End Function
-
Ok mutanab.
Aunque no es relativamente importante, ojo con el control de años bisiesto que haces, pues no es del todo correcto, no todos los años múltiplos de 4 son bisiestos... los años múltiplos de 100 no son bisiestos, excepto si son también multiplos de 400.
Cosas de los ajustes de calendario...
Chao.