Re: [Python] Operazioni con le date
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
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
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
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
> 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
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
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