web-dev-qa-db-fra.com

Changez datetime en horodatage Unix dans Python

Veuillez m'aider à modifier l'objet datetime (par exemple: 2011-12-17 11:31:00-05:00) (y compris le fuseau horaire) à l'horodatage Unix (comme la fonction time.time () en Python).

22
Thelinh Truong

Une autre façon est:

import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())

L'horodatage est l'horodatage unix qui affiche la même date avec l'objet datetime d.

14
Shnkc
import time

import datetime

dtime = datetime.datetime.now()

ans_time = time.mktime(dtime.timetuple())
12
user2673780

Réponse incomplète (ne traite pas des fuseaux horaires), mais j'espère utile:

time.mktime(datetime_object.timetuple())

** Modifié sur la base du commentaire suivant **

Dans mon programme, l'utilisateur saisit datetime, sélectionne le fuseau horaire. ... J'ai créé une liste de fuseaux horaires (utilisez pytz.all_timezones) et permettez à l'utilisateur de choisir un fuseau horaire dans cette liste.

Le module Pytz fournit les conversions nécessaires. Par exemple. si dt est votre objet datetime et que l'utilisateur a sélectionné 'US/Eastern'

import pytz, calendar
tz = pytz.timezone('US/Eastern')
utc_dt = tz.localize(dt, is_dst=True).astimezone(pytz.utc)
print calendar.timegm(utc_dt.timetuple())

L'argument is_dst=True consiste à résoudre les heures ambiguës pendant les intervalles d'une heure à la fin de l'heure d'été (voir ici http://pytz.sourceforge.net/#problems-with-localtime ).

6
DS.