Hola, amigo.
Prueba el siguiente código para pasar una fecha normal (Gregoriana) a fecha Juliana.
Para que funcione, abre un Nuevo Proyecto Exe Estándar y añade los siguientes controles:
6 TextBox:
txtY
txtM
txtD
txtH
txtH1
txtH2
1 CommandButton
cmdCalc
1 Label
lblJ
Y, en el editor de código del formulario, pega el siguiente código fuente, que permite el cálculo de una fecha Juliana equivalente a la fecha Gregoriana actual a partir del año, el mes, el día, la hora, el minuto y el segundo.
Este es el código:
'------------------------------------------------------
'CÓDIGO FUENTE
'------------------------------------------------------
'------------------------------------
'Nombre: Código para calcular fecha Juliana
'Creador: Zoto - www.lawebdelprogramador.com - Foro Visual Basic
'23/03/2006 - 22:30
'Este código puede distribuirse sin ninguna
'restricción.
'------------------------------------
Private Sub cmdCalc_Click()
lblJ.Caption = GetJulianDate(txtY.Text, txtM.Text, txtD.Text, txtH.Text, txtH1.Text, txtH2.Text)
End Sub
'------------------------------------------------------------------------
'Toma los valores de fecha indicados y devuelve un Double que contiene
'la fecha Juliana correspondiente a la fecha Gregoriana
'------------------------------------------------------------------------
Private Function GetJulianDate(Y As Double, M As Double, D As Double, H As Double, H1 As Double, H2 As Double) As Double
'Y = Año
'M = Mes
'D = Día
'H = Hora
'H1 = Minuto
'H2 = Segundo
S = Y + M / 100 + D / 10000
'Comprobación de fecha
If S <= 1582.1004 Then
G = 0
ElseIf S >= 1582.1015 Then
G = 1
ElseIf S > 1582.1004 And S < 1582.1015 Then
G = -1
'Entre el 04/10/1582 (Y) el 15/10/1582 (entre ese rango de fechas no existe)
End If
'Cálculo de fecha Juliana
H = H + ((H2 / 60 + H1) / 60)
D = D + H / 24
D1 = Int(D)
F = D - D1 - 0.5
J = -1 * Int(7 * (Int((M + 9) / 12) + Y) / 4)
S = 1
If G = 1 Then
If ((M - 9) < 0) Then S = -1
A = Abs(M - 9)
J1 = Int(Y + S * Int(A / 7))
J1 = -1 * Int((Int(J1 / 100) + 1) * 3 / 4)
Else
J1 = 0
End If
J = J + Int(275 * M / 9) + D1 + G * J1
J = J + 1721027 + 2 * G + 367 * Y
If F < 0 Then
F = F + 1
J = J - 1
End If
J = J + F
'If G = -1 Then J = "Fecha no valida"
GetJulianDate = J
End Function
'------------------------------------------------------
'CÓDIGO FUENTE
'------------------------------------------------------
Si te interesa, puedes visitar estos links para obtener información histórica sobre la fecha Juliana:
http://www.alandalus-siglo21.org/index.html?/pages/temjul.html
http://www.geocities.com/xgarciaf/java/fechajul.htm
Esto es un Applet de Java que hace lo mismo que este código y en el cual me he basado para su conversión a Visual Basic:
http://www.geocities.com/xgarciaf/java/juliano.htm
Si tienes alguna otra duda, postea aquí.
Hasta otra,
Zoto