SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Dieguinho. en Martes 20 de Noviembre de 2007, 19:35

Título: Fecha Juliana A Gregoriana
Publicado por: Dieguinho. en Martes 20 de Noviembre de 2007, 19:35
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.
Título: Re: Fecha Juliana A Gregoriana
Publicado por: Dieguinho. en Viernes 23 de Noviembre de 2007, 18:31
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.