Aritmética de fechas

Antonio Castro acastro en ciberdroide.com
Mie Ene 5 09:57:30 CET 2005


On Wed, 5 Jan 2005, Dr Bobus wrote:

> Facil debe ser, solo tienes que plantear un tema primero:
>
> Define: segundo (no problema)
> Define: minuto (no problema segundo * 60)
> Define: hora (no problema minuto *60)
> Define: dia (no problema hora * 24)
> Define: mes (si problema dia * ????)
> Define: anyo (no problema si tienes definido correctamnete mes .... si no si problema)

Mes no se define solo en función de días. También en el caso de Febrero
se define en función del año. ;-)

Se puede implementar un módulo de aritmética de fechas.  Pero si se usa
el operador '+' para añadir un més a una fecha se está dando a entender
que solo hay una forma de sumar un més a una fecha y que además es una
operación con las propiedades de la suma aritmética. Su uso de forma
intuitivo (sin leerse las especificaciones) ocasionaría problemas.

Si por el contrario se implementa un par de funciones con nombre distinto
que implemenenten dos formas de sumar un més a una fecha ya el usuario
percibe que hay varias formas de sumar. Intuitivamente percibe la realidad
como algo complejo que le hará ir a la especificación antes de usar la
función.

> el tema se resume a definir mes. y probablemente la definicion de mes que uses variara segun el tipo de aplicacion...  y el usuario que la va a usar.....
>
> Ejemplo de la vida comun....
>
> Si quedas hoy (05/01/05) para dentro de un mes con alguien (la mayoria de) la gente pensara que has quedado el 05/02/05 (dentro de 31 dias) no que has quedado el 04/02/05 .... pero si por el contrario.... el 31 de enero le dices a alguien que dentro de un mes nos vemos... (la mayoria de) la gente pensara que has quedado para el ultimo dia de febrero (dentro de 28 dias) y no a principios de marzo :)))
>
> Y claro todo esto sin salirse del calendario  gregoriano.... que si lo quieres hacer con otros lo tendras mas divertido :))
>
>
> Define mes y solucionas el problema.

Yo no lo veo así. Mes puede ser algo mucho mas concreto y preciso que la
operación de sumar un més a una fecha. El error conceptual de base es
pensar que podemos asimilar completamente esa función a un operador único
'+'.

def SumaMesFechaExceso(mes, fecha):
    '''
    Aqui en el comentario, viene la parte importante.
    '''

def SumaMesFechaDefecto(mes, fecha):
    '''
    Aqui en el comentario, viene la parte importante.
    '''

Puede que existan otras formas distintas que las dos que se nos ocurra
implementar,  pero al poner dos ya estamos mandando un mensaje claro al
usuario de este módulo de aritmética de fechas. Si necesita su propia
suma se la implementará el mísmo pero en ningún caso se le induce al
error.

-- 
Un saludo
Antonio Castro

       /\     /\
         \\W//
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro en ciberdroide.com   |
+()()()---------()()()--------------------+




Más información sobre la lista de distribución Python-es