[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