Re: [Python] Operazioni con le date

2008-01-04 Per discussione Francesco Guerrieri
On Jan 4, 2008 1:25 PM, Pietro Battiston <[EMAIL PROTECTED]> wrote:

> Salve a tutti e buon anno,
>
> ho dei problemi con la gestione di date in Python. Mi sono letto per
> bene la documentazione del modulo time e ho anche fatto qualche ricerca,
> ma non riesco a capire come fare una somma tra date.
>


Ciao,

prova a vedere se dateutil va bene per i tuoi scopi (leggendo la tua mail
rapidamente mi sembra di sì)
http://labix.org/python-dateutil

ciao,
francesco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Operazioni con le date

2008-01-04 Per discussione Pietro Battiston
Salve a tutti e buon anno,

ho dei problemi con la gestione di date in Python. Mi sono letto per
bene la documentazione del modulo time e ho anche fatto qualche ricerca,
ma non riesco a capire come fare una somma tra date.

Ad esempio, vorrei una cosa che, avendo come argomenti una time.struct_time:
(1970, 1, 1, 1, 0, 0, 3, 1, 0)
e un lasso di tempo, magari codificato con la stessa convenzione:
(0,1,2,1,3,0)
(ovvero 1 mese, 2 giorni, 1 ora e tre minuti)
mi restituisca la time.struct_time:
(1970, 2, 3, 2, 3, 0, 1, 34, 0)

N.B: /non/ mi basterebbe fare:
time.localtime(time.mktime((1970, 1, 1, 1, 0, 0, 3, 1,
0))+time.mktime((1970,2,3,2,3,0,0,0,0)))
infatti in /questo/ caso funziona, ma in generale assume che un mese sia
lungo 31 giorni, che un anno sia bisestile, si dimentica i secondi che
ogni tanto vengono inseriti d'estate...
Io voglio che quando sommo un anno venga sommato proprio un anno, non
365/366 giorni; quando sommo un mese, sia sommato un mese, non
31/30/29/38 giorni e quando sommo un giorno sia sommato un giorno, a
prescindere dall'eventualità in cui quel giorno ha avuto un secondo in
più...

È una cosa che non sarebbe troppo complicato realizzare (basta
memorizzare la lunghezza dei mesi e gli anni bisestili per fare gli
opportuni "riporti") ma che mi stupisce non trovare nella libreria
standard...
A proposito di implementazione manuale: esiste una funzione di libreria
per sapere se un anno è bisestile senza dovere calcolare la sua
lunghezza in secondi?

ciao, grazie

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Operazioni con le date

2008-01-04 Per discussione Luca
On Jan 4, 2008 1:25 PM, Pietro Battiston <[EMAIL PROTECTED]> wrote:
> ho dei problemi con la gestione di date in Python. Mi sono letto per
> bene la documentazione del modulo time e ho anche fatto qualche ricerca,
> ma non riesco a capire come fare una somma tra date.
>
> Ad esempio, vorrei una cosa che, avendo come argomenti una time.struct_time:
> (1970, 1, 1, 1, 0, 0, 3, 1, 0)
> e un lasso di tempo, magari codificato con la stessa convenzione:
> (0,1,2,1,3,0)
> (ovvero 1 mese, 2 giorni, 1 ora e tre minuti)
> mi restituisca la time.struct_time:
> (1970, 2, 3, 2, 3, 0, 1, 34, 0)

In questo caso io lavoro sempre bene coi millisecondi. Converti la
data in millisecondi, sommi dei millisecondi (il tuo lasso di tempo) e
poi ritrasformi tutto in data

> A proposito di implementazione manuale: esiste una funzione di libreria
> per sapere se un anno è bisestile senza dovere calcolare la sua
> lunghezza in secondi?

Dovrebbe esserci... in generale se l'anno è divisibile per 4 è
bisestile ma non è proprio esatto, il calendario gregoriano ha alcune
eccezioni.
Sono piuttosto certo che ci sia un modo per ottenere questa
informazione senza reinventare la ruota.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Operazioni con le date

2008-01-04 Per discussione Simone
Pietro Battiston ha scritto:

> Io voglio che quando sommo un anno venga sommato proprio un anno, non
> 365/366 giorni; quando sommo un mese, sia sommato un mese, non
> 31/30/29/38 giorni e quando sommo un giorno sia sommato un giorno, a
> prescindere dall'eventualità in cui quel giorno ha avuto un secondo in
> più...

Hai provato a vedere il modulo datetime?

In quel modulo c'è l'oggetto datetime che rappresenta una data con ora e 
l'oggetto timedelta che rappresenta ciò che vuoi sommare.

> È una cosa che non sarebbe troppo complicato realizzare (basta
> memorizzare la lunghezza dei mesi e gli anni bisestili per fare gli
> opportuni "riporti") ma che mi stupisce non trovare nella libreria
> standard...
> A proposito di implementazione manuale: esiste una funzione di libreria
> per sapere se un anno è bisestile senza dovere calcolare la sua
> lunghezza in secondi?

Certo. Funzione isleap() del modulo calendar.

Spero possa esserti utile.
Simone

Chiacchiera con i tuoi amici in tempo reale! 
 http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com 
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Operazioni con le date

2008-01-04 Per discussione Lawrence Oluyede
> Ad esempio, vorrei una cosa che, avendo come argomenti una time.struct_time:
> (1970, 1, 1, 1, 0, 0, 3, 1, 0)
> e un lasso di tempo, magari codificato con la stessa convenzione:
> (0,1,2,1,3,0)
> (ovvero 1 mese, 2 giorni, 1 ora e tre minuti)
> mi restituisca la time.struct_time:
> (1970, 2, 3, 2, 3, 0, 1, 34, 0)

Concordo con Francesco Guerrieri. Dopo aver scritto varie routine per
convertire formati di date (per ogni specifica o prodotto che mi viene
in mente c'è un formato diverso :P) sono arrivato al punto di dover
gestire intervalli di tempo e ho deciso di aggiungere una dipendenza
in dateutil che queste cose (e altre come rrules e timezone) le
gestisce alla perfezione!


-- 
Lawrence, stacktrace.it - oluyede.org - neropercaso.it
"It is difficult to get a man to understand
something when his salary depends on not
understanding it" - Upton Sinclair
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Operazioni con le date

2008-01-04 Per discussione Pietro Battiston
Lawrence Oluyede ha scritto:
>> Ad esempio, vorrei una cosa che, avendo come argomenti una time.struct_time:
>> (1970, 1, 1, 1, 0, 0, 3, 1, 0)
>> e un lasso di tempo, magari codificato con la stessa convenzione:
>> (0,1,2,1,3,0)
>> (ovvero 1 mese, 2 giorni, 1 ora e tre minuti)
>> mi restituisca la time.struct_time:
>> (1970, 2, 3, 2, 3, 0, 1, 34, 0)
>> 
>
> Concordo con Francesco Guerrieri. Dopo aver scritto varie routine per
> convertire formati di date (per ogni specifica o prodotto che mi viene
> in mente c'è un formato diverso :P) sono arrivato al punto di dover
> gestire intervalli di tempo e ho deciso di aggiungere una dipendenza
> in dateutil che queste cose (e altre come rrules e timezone) le
> gestisce alla perfezione!
>   

Perfetto, fa proprio al caso mio.
(per la cronaca, invece datetime non era sufficiente, perché il suo
formato timedelta memorizza - tramite opportune conversioni - solo in
giorni e secondi, mentre io ho bisogno che sia memorizzato ad esempio il
"concetto" di mese, o anche solo di ora)

Dubbio: se una cosa comoda come dateutil non è (in) una libreria
standard python è una questione di tempo o c'è un motivo più profondo?

grazie

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Operazioni con le date

2008-01-04 Per discussione Giorgio Zoppi
Pietro Battiston ha scritto:
> Lawrence Oluyede ha scritto:
>   
>>> Ad esempio, vorrei una cosa che, avendo come argomenti una time.struct_time:
>>> (1970, 1, 1, 1, 0, 0, 3, 1, 0)
>>> e un lasso di tempo, magari codificato con la stessa convenzione:
>>> (0,1,2,1,3,0)
>>> (ovvero 1 mese, 2 giorni, 1 ora e tre minuti)
>>> mi restituisca la time.struct_time:
>>> (1970, 2, 3, 2, 3, 0, 1, 34, 0)
>>> 
>>>   
>> Concordo con Francesco Guerrieri. Dopo aver scritto varie routine per
>> convertire formati di date (per ogni specifica o prodotto che mi viene
>> in mente c'è un formato diverso :P) sono arrivato al punto di dover
>> gestire intervalli di tempo e ho deciso di aggiungere una dipendenza
>> in dateutil che queste cose (e altre come rrules e timezone) le
>> gestisce alla perfezione!
>>   
>> 
>
> Perfetto, fa proprio al caso mio.
> (per la cronaca, invece datetime non era sufficiente, perché il suo
> formato timedelta memorizza - tramite opportune conversioni - solo in
> giorni e secondi, mentre io ho bisogno che sia memorizzato ad esempio il
> "concetto" di mese, o anche solo di ora)
>
> Dubbio: se una cosa comoda come dateutil non è (in) una libreria
> standard python è una questione di tempo o c'è un motivo più profondo?
>
>   
C'era tempo fa un PEP che ha sollevato il tuo problema, poi non ricordo 
piu, ma non se ne fece piu nulla.

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python