<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 15 ottobre 2014 16:12, Daniele Varrazzo <span dir="ltr"><<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":lr" class="a3s" style="overflow:hidden">La "data seriale" di windows evidentemente usa uno zero diverso da quello di Python:<br>
<br>
    >>> import datetime<br>
    >>> datetime.date(2008,8,30).<u></u>toordinal()<br>
    733284<br>
<br>
Puoi verificare che le due epoche, quella di Python e quella di Windows sono costanti, partendo dai tuoi due esempi:<br>
<br>
    >>> datetime.date(2008,8,30).<u></u>toordinal() - 39690<br>
    693594<br>
<br>
    >>> datetime.date(2011,11,2).<u></u>toordinal() - 40849<br>
    693594<br>
<br>
Quindi basta aggiungere questo offset:<br>
<br>
    >>> def date_from_winserial(n):<br>
    ... return datetime.date.fromordinal(n + 693594)<br>
<br>
    >>> date_from_winserial(39690)<br>
    datetime.date(2008, 8, 30)<br>
<br>
    >>> date_from_winserial(40849)<br>
    datetime.date(2011, 11, 2)<br>
<br>
Curiosita': quale zero usa windows?<br>
<br>
    >>> date_from_winserial(0)<br>
    datetime.date(1899, 12, 30)<br>
<br>
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...</div></blockquote></div><div class="gmail_extra"><br></div>Grazie!</div><div class="gmail_extra"><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Riccardo Brazzale<br>Linux User #299418 <div>Linux Machine #184578<br></div></div>
</div></div>