Dias360 en delphi
en excel para calcular el numero de dias es asi:
pero ojo excel toma como 360 dias por año. DIAS360(fecha_inicial;fecha_final;método) quiero hacer igual a excel, q me arroje el mismo resultado de dias pero en delphi. |
Hola ingabraham.
La función DaysBetween que esta en la unit DateUtils, te da la cantidad de días entre dos fechas. Saludos. |
Supongo que será algo como:
Saludos! |
Después de responder, me di cuenta que la funcion DAYS360 / DIAS360 no cuenta simplemente meses de 30 días, sino que es algo mas complejo:
http://office.microsoft.com/en-us/ex...005209047.aspx Encontre en la web este código en VB: http://www.experts-exchange.com/Data..._24634023.html Y lo traduje a esto SIN PROBARLO:
|
como se llama esta función?
Method: boolean que es? que se le pasa por parametro. |
Cita:
El nombre de la función es Days360, como lo expuso Delphi.com.ar. Method es un parámetro de tipo Boolean (Verdadero o Falso). Aparentemente, sirve para indicarle a la función por que método se va a realizar el cálculo: U.S. (NASD) method ó European method Saludos. |
Cita:
Saludos |
NO ME FUNCIONA NINGUNO DE LOS DOS CODIGOS :confused:
Ingresen a excel dos fechas y en la celda resultado escriban =dias360(f1,f2); esto es lo que yo quiero obtener en delphi ????? ayudenme. |
1 Archivos Adjunto(s)
Cita:
No olvidar poner en las uses DateUtils Saludos |
Hola
Saludos |
A ver ingabraham... probá con esta función:
Al igual que la de Federico es una traducción. No uso Microsoft Office por lo que no puedo probarla con Excel, pero pareciera funcionar. De no ser así, con todo lo que te han posteado, tenés una buena base para desarrollarla por vos mismo. Al fín y al cabo, sos el interesado ¿no ? :D Por supuesto, cuando esté funcionando, todos te vamos a agradecer el aporte si decidís compartirlo. :) Saludos. |
hola gracias por el codigo, lo probare.
a mis compañeros que me mencionan la funcion DaysBetween prueben con 22 febrero del 2010 y 10 agosto 2010 dias360 excel da 168 DaysBetween delphi da 169 casi pega en el blanco, lo que no se es si con un rango de fecha mas grande existan más dias de diferencia. |
hola gracias por el codigo, pero nda, no me funciona.
a mis compañeros que me mencionan la funcion DaysBetween prueben con 22 -02--2010 y 10-08-2010 dias360 excel da 168 DaysBetween delphi da 169 diferencia 1 dia 06 -11-2009 y 30-07-2010 dias360 excel da 264 DaysBetween delphi da 266 diferencia 2 dias 28-03-2010 y 10-08-2010 dias360 excel da 132 DaysBetween delphi da 135 diferencia 3 dias |
diferencia de dias , suponiendo que los meses son de 30 dias.
necesito un algoritmo para calcular la diferencia de dias entre dos fechas
partiendo de que cada mes tiene 30 dias y año 360. |
Pues entonces sólo has de dividir entre 30 :)
|
Cita:
ej. 31.01.2010 al 15.09.2010 o 27.02.2010 al 15.09..2010 |
|
ingabraham, si no has conseguido resolver el problema, no inicies un nuevo hilo, sigue con el que estabas, gracias.
Ya he unido los dos en uno sólo. |
Gracias Casimiro.
Avisé para evitar múltiples resultados de un mismo tema en las busquedas. Saludos. :) |
Cita:
|
y si nadi me da la idea de como hacer un algoritmo para esto, lo planteo de otra forma.
|
los dias son 30 dias de cada mes.
de los 12 meses. existen 360 dias al año- hay q hacer un algoritmo para obtener la dif de dias basandose en estos datos. Hellpppp.- |
El problema es que no sabemos qué hace exactamente esa función days360.
Pero se supone que si cuentas los días que hay entre dos fechas, qué hace, calcular todos los meses a 30 días?, es que si es así, entonces no se puede usar daysbetween, salvo que luego restemos los días de meses de 31 días y sumemos las de febrero, teniendo en cuenta si ese año es bisiesto. No sé, me da la sensación de estar sumando peras y manzanas, algo no cuadra. |
tengo una idea, es la siguiente
supongamos que las fechas son 1 enero a al 31 agosto. algoritmo seria diferencia de dias con el DaysBetween luego recorrer desde la fi, hasta la final y hacer lo siguiente ciclo if fi[mes1 ( maximo dia ) ]== 31 cuentadias = cuentadias -1 fi[mes1 ( maximo dia ) ]== 28 cuentadias = cuentadias +2 fi[mes1 ( maximo dia ) ]== 29 cuentadias = cuentadias + 1 fciclo dias+cuenta y creo q ya. pero como recorro estos meses de la fi, a la ff.? espero q me hayan entendido. nota: la idea es calcular sin importar los 30 dias de cada mes luego recorrer esos meses y si hay q agregarle se agrega y si hay q quitarles se le quita. |
Hola ingabraham.
Busqué y encontré código de días360, sobre todo en VB, y ningúno funcionó. Es más, ni siquiera arrimaban a un resultado coherente, DaysBetween aproximaba mejor. Así que pasé el borrador sobre lo leido, dejé de perder el tiempo e hice la función desde cero. No sé si es buen código... seguramente algún compañero con mas luces que yo ( y reconozco que son muchos :o ) pueda optimizarlo. Pero bueno, hace lo que tiene que hacer. Al menos hasta que se demuestre lo contrario... :p
Saludos.:) |
Cita:
|
Cita:
Acabo de corregir un pif de la función que escribí. Lo dá cuando el día ingresado en la fecha inicial es 31, por suerte es fácil de corregir. Queda así:
Saludos. :) |
Cita:
Por lo tanto, tu código es mucho mejor, más seguro, más eficiente, más económico y no hay que esperar a una versión nueva del programa para solucionar el problemilla, jejeje :) Y por si fuese poco, tu código es libre como el viento, el de ellos no lo verás jamás aunque pagues por un excel. |
En los parrafos 1 y 3 estoy totalmente de acuerdo con vos.
Ahora en el 2 tengo mis dudas... :D Gracias Casimiro.:) |
gracias, lo he probado con varias fechas
hasta el momento todo esta bien, no se si depronto con algun rango de fechas podra fallar- muchas gracias esto era lo que esperaba, pero me podrias dar una breve explicacion de lo q hicistes q no entendi nda de la funcion de la logica q tiene. |
Hola.
Mirá te documento el código que es la mejor manera que se me ocurre para explicarlo. Creo que, como a mí, tener un calendario en la mano te va ayudar a entender como es la lógica de dias360.
A la reducción de la fórmula llegué simplemente reemplazando las variables por su equivalente, como por ejemplo en:
Por último, los resultados los cotejé contra el OpenOffice.org.calc. Saludos.:) |
La franja horaria es GMT +2. Ahora son las 18:16:08. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi