[Python] Gestione delle date

Riccardo Brazzale riccardo.brazzale a gmail.com
Mer 15 Ott 2014 16:32:07 CEST


Il giorno 15 ottobre 2014 16:12, Daniele Varrazzo <piro a develer.com> ha
scritto:

> La "data seriale" di windows evidentemente usa uno zero diverso da quello
> di Python:
>
>     >>> import datetime
>     >>> datetime.date(2008,8,30).toordinal()
>     733284
>
> Puoi verificare che le due epoche, quella di Python e quella di Windows
> sono costanti, partendo dai tuoi due esempi:
>
>     >>> datetime.date(2008,8,30).toordinal() - 39690
>     693594
>
>     >>> datetime.date(2011,11,2).toordinal() - 40849
>     693594
>
> Quindi basta aggiungere questo offset:
>
>     >>> def date_from_winserial(n):
>     ... return datetime.date.fromordinal(n + 693594)
>
>     >>> date_from_winserial(39690)
>     datetime.date(2008, 8, 30)
>
>     >>> date_from_winserial(40849)
>     datetime.date(2011, 11, 2)
>
> Curiosita': quale zero usa windows?
>
>     >>> date_from_winserial(0)
>     datetime.date(1899, 12, 30)
>
> E che data e'? Con questa data credo che 1 corrisponda al 1/1/1900 se si
> include il bug di considerare il 1900 come un anno bisestile (che
> semplifica l'algoritmo di ricerca degli anni bisestili a "anno & 3 == 0" e
> funziona bene dal 1901 al 2099). Le date dal 1/1 al 27/2/1900 sono
> sbagliate ma le altre vanno bene, che e' un'approssimazione sufficiente per
> gli standard pragmatici di Microsoft e le ristrettezze dell'hardware per
> cui le prime versioni di Excel erano scritte. Archeologia informatica...
>

Grazie!



-- 
Riccardo Brazzale
Linux User #299418
Linux Machine #184578
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20141015/65490eb9/attachment.html>


Maggiori informazioni sulla lista Python