Il giorno 15 ottobre 2014 16:12, Daniele Varrazzo <p...@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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python