/// <summary> /// Crea una instancia de una fecha Maya en el 0.0.0.0.0 4 Ajaw 8 Cumku /// </summary> public Date() { this.Correlation = 584283; // Constante de correlacion GMT (Goodman, Martinez, Thompson) this.Day = 13; this.Month = 8; this.Year = 3114; this.Era = Era.BeforeCrist; this.Baktun = 0; this.Katun = 0; this.Tun = 0; this.Uinal = 0; this.Kin = 0; this.Tzolkin = new Tzolkin(); this.Haab = new Haab(); }
/// <summary> /// Calcula la fecha del calendario civil a la que es equivalente la fecha Maya instanciada. /// </summary> private void ComputeHaabDate() { int totalDays = (this.Kin * 1) + (this.Uinal * 20) + (this.Tun * 360) + (this.Katun * 7200) + (this.Baktun * 144000); // Pero como el 0.0.0.0.0 inicia en 8 Cumku, y el 8 Cumku sería el día número 349 del // Haab, entonces se le suman los 349 dias al total de días de la cuenta larga para // lograr la equivalencia. totalDays += 349; int yearDay = totalDays % 365; int montDay = (yearDay % 20) - 1; int month = IntPart((yearDay) / 20) + 1; this.Haab = new Haab(montDay, (Uinal)month); }
/// <summary> /// Crea una instancia de una fecha Maya en la cuenta larga indicada. /// </summary> /// <param name="baktun">Baktun en la fecha Maya.</param> /// <param name="katun">Katun en la fecha Maya.</param> /// <param name="tun">Tun en la fecha Maya.</param> /// <param name="uinal">Uinal en la fecha Maya.</param> /// <param name="kin">Kin en la fecha Maya.</param> public Date(int baktun, int katun, int tun, int uinal, int kin) : this() { if (baktun > 19 || baktun < 0) { throw new ArgumentOutOfRangeException("baktun", string.Format(Resources.ArgumentOutOfRangeException_Message, "baktun", 0, 19)); } if (katun > 19 || katun < 0) { throw new ArgumentOutOfRangeException("katun", string.Format(Resources.ArgumentOutOfRangeException_Message, "katun", 0, 19)); } if (tun > 19 || tun < 0) { throw new ArgumentOutOfRangeException("tun", string.Format(Resources.ArgumentOutOfRangeException_Message, "tun", 0, 19)); } if (uinal > 19 || uinal < 0) { throw new ArgumentOutOfRangeException("uinal", string.Format(Resources.ArgumentOutOfRangeException_Message, "uinal", 0, 19)); } if (kin > 19 || kin < 0) { throw new ArgumentOutOfRangeException("kin", string.Format(Resources.ArgumentOutOfRangeException_Message, "kin", 0, 19)); } // Si se especifican todos los parametros a cero, se dejan // los valores asignados por el constructor por defecto. if (baktun + katun + tun + uinal + kin == 0) { return; } this.Baktun = baktun; this.Katun = katun; this.Tun = tun; this.Uinal = uinal; this.Kin = kin; this.Tzolkin = new Tzolkin(3, KinName.Kawak); this.Haab = new Haab(2, UinalName.Kankin); this.ComputeGregorianDate(); this.ComputeHaabDate(); this.ComputeTzolkinDate(); }