Comment convertir un datetime.datetime python pour exceler le numéro de série

J'ai besoin de convertir des dates dans Excel numéros de série pour les données munging script que je suis en train d'écrire. En jouant avec les dates dans mon OpenOffice classeur Calc, j'ai été en mesure de déduire que '1-Jan 1899 00:00:00' cartes pour le nombre zéro.

J'ai écrit la fonction suivante pour convertir à partir d'un python objet datetime dans un Excel numéro de série:

def excel_date(date1):
    temp=dt.datetime.strptime('18990101', '%Y%m%d')
    delta=date1-temp
    total_seconds = delta.days * 86400 + delta.seconds
    return total_seconds

Cependant, lorsque je tente quelques exemples de dates, les chiffres sont différents de ceux que je reçois quand je format de la date que d'un certain nombre dans Excel (bien OpenOffice Calc). Par exemple, le test '2009-03-20' donne 3478032000 en Python, alors que excel rend le numéro de série de 39892.

Quel est le problème avec la formule ci-dessus?

*Note: j'utilise Python 2.6.3, donc n'ont pas accès à l'datetime.total_seconds()

source d'informationauteur Homunculus Reticulli