• Viernes 29 de Marzo de 2024, 15:16

Autor Tema:  Fecha Juliana A Gregoriana  (Leído 10754 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Fecha Juliana A Gregoriana
« en: Martes 20 de Noviembre de 2007, 19:35 »
0
Hola!,
Alguno tiene idea de como pasar una fecha juliana a gregoriana??
En realidad tengo que hacer ambas conversiones pero de gregoriana a juliana ya la pude hacer.
Ya probe varias cosas que vi por la red pero ninguna funciona bien.
Tambien estoy viendo la clase JulianCalendar pero no se si hace lo que necesito,
bueno si alguno tuvo que hacer algo como esto y me puede dar una mano se lo agradezco.

saludos.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Fecha Juliana A Gregoriana
« Respuesta #1 en: Viernes 23 de Noviembre de 2007, 18:31 »
0
Bueno finalmente averigue mas o menos como funcionaba esto de la fecha juliana y lo hice a mano. Pareceria que funciona bien.
Se los dejo por si alguien lo necesita en algun momento.

Saludos.

Código: Text
  1.  
  2.        public string GregorianaToJuliana(int iDia, int iMes, int iAño)
  3.         {
  4.             try
  5.             {
  6.                 DateTime dtFechaGregoriana = Convert.ToDateTime(iDia.ToString() + "/" + iMes.ToString() + "/" + iAño.ToString());
  7.                 string sFechaJuliana;
  8.  
  9.                 if (iAño < 1900 || iAño > 2899)
  10.                     return "000000";
  11.  
  12.                 sFechaJuliana = Convert.ToString(iAño - 1900).PadLeft(3, '0');
  13.  
  14.                 sFechaJuliana += dtFechaGregoriana.DayOfYear.ToString().PadLeft(3, '0');
  15.  
  16.                 return sFechaJuliana;
  17.             }
  18.             catch
  19.             {
  20.                 return "000000";
  21.             }
  22.         }
  23.  
  24.  
Código: Text
  1.  
  2.        public string JulianaToGregoriana(string sJuliana)
  3.         {
  4.             int iAño;
  5.             int iDias;
  6.             GregorianCalendar gcBisiesto = new GregorianCalendar();
  7.  
  8.             try
  9.             {
  10.                 iAño = Convert.ToInt32(sJuliana.Substring(0, sJuliana.Length - 3)) + 1900;
  11.                 iDias = Convert.ToInt32(sJuliana.Substring(sJuliana.Length - 3, 3));
  12.  
  13.                 if ((iDias == 366 && gcBisiesto.IsLeapYear(iAño) == false) || iDias > 366)
  14.                     return "00/00/0000";
  15.  
  16.                 DateTime Fecha = new DateTime(iAño - 1, 12, 31);
  17.  
  18.                 Fecha = Fecha.AddDays(iDias);
  19.                 return Fecha.Date.ToShortDateString();
  20.             }
  21.             catch
  22.             {
  23.                 return "00/00/0000";
  24.             }
  25.         }
  26.  
  27.