Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: CoduJ en 02 de Mayo 2020, 01:32
-
Buenas, espero que se encuentren bien.
Como lo dice en el asunto, necesito un poco de orientación en cuanto a un código que me ha costado bastante ver como funciona e igualmente a programarlo:
if (Year_2 > Year || Year > Year_2){
DateMinus = (Day - Day_2) - ((Month - Month_2) + 30) - (((Year - Year_2) * 365));
if (DateMinus < 0){
DateMinus *= -1;
}
}else if (Year == Year_2){
DateMinus = (Day - Day_2) - ((Month - Month_2) * 30);
}
Algo raro que he notado es que aveces se pasa de la fecha por unos días (16, por ejemplo) o algunas veces faltan, por lo que he visto, suele pasar cuando son fechas grandes en momentos donde faltan días, y no he notado un "patrón" claro en el caso de que se pasen días.
Una cosa es que este es un ejercicio de programación que estoy siguiendo, y el anunciado aclara que se debe de suponer que todos los meses tienen 30 días, soy consiente de eso, pero no creo que esa sea la razón del porqué falten 15 días o incluso se pase por casi 34 días. Lamentablemente, me vi forzado a ver la respuesta del ejercicio, ya que no comprendía que pasaba, y según la fórmula, es esta:
total_dias = dia2-dia1 + 30*(mes2-mes1)+365*(año2-año1);
Por la gran decepción al ver la respuesta, y no verme capaz de hacerlo por mi parte, quise "crear" una nueva fórmula con base en lo que vi.
-
¿Aquí querías poner meses + 30, o más bien sería meses * 30?
if (Year_2 > Year || Year > Year_2){
DateMinus = (Day - Day_2) - ((Month - Month_2) + 30) - (((Year - Year_2) * 365));
-
¿Aquí querías poner meses + 30, o más bien sería meses * 30?
if (Year_2 > Year || Year > Year_2){
DateMinus = (Day - Day_2) - ((Month - Month_2) + 30) - (((Year - Year_2) * 365));
Vale, resulta que soy retrasado y se me olvido probar con eso, sin embargo, aun así se me adelantan días, como 2 o 3, ¿se debe por la regla de los 30 días? Ya que estoy comparando mis resultados con una calculadora de fechas.
-
Seguramente.
Si se consideran que todos los meses duran 30 días, lo cuál es falso, es imposible que de resultados acordes con la realidad.
Esa regla de los 30 días es para simplificar, pues si se quisiera ser exquisito en los cálculos, la cosa se complicaría mucho: meses de 30 días, otros de 31, está Febrero que es de 28.. menos en años bisiestos que entonces es 29...
Al final se desvirtúa la intención del ejercicio, que es enseñar a programar, no a ser astrólogo xDD
Un saludo.