Jak przekonwertować obiekt Python time.struct_time
na obiekt datetime.datetime
?Jak przekonwertować obiekt Python time.struct_time na obiekt typu datetime?
mam bibliotekę, która zapewnia pierwszy i drugi bibliotekę, która chce drugi ...
Jak przekonwertować obiekt Python time.struct_time
na obiekt datetime.datetime
?Jak przekonwertować obiekt Python time.struct_time na obiekt typu datetime?
mam bibliotekę, która zapewnia pierwszy i drugi bibliotekę, która chce drugi ...
Korzystając time.mktime() konwertowania krotki czas (w localtime) w sekundach od Epoki, następnie użyj datetime.fromtimestamp(), aby uzyskać obiekt datetime.
from time import mktime
from datetime import datetime
dt = datetime.fromtimestamp(mktime(struct))
tak:
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
To nie jest bezpośrednia odpowiedź na twoje pytanie (na co odpowiedź została już odebrana). Jednakże, kilkakrotnie ugryzłszy mnie w fundament, nie mogę podkreślić wystarczająco, że powinienem uważnie przyjrzeć się temu, co zapewnia obiekt time.struct_time, w porównaniu do innych pól czasowych.
Zakładając, że masz zarówno obiekt time.struct_time, jak i jakiś inny ciąg daty/czasu, porównaj oba i upewnij się, że nie tracisz danych i nieumyślnie tworząc naiwny obiekt datetime, kiedy możesz zrobić inaczej.
Na przykład doskonały moduł feedparser zwróci „opublikował” pola i może zwrócić obiekt time.struct_time w „published_parsed” pola:
time.struct_time(tm_year=2013, tm_mon=9, tm_mday=9, tm_hour=23, tm_min=57, tm_sec=42, tm_wday=0, tm_yday=252, tm_isdst=0)
Zauważmy teraz, co rzeczywiście się z „opublikowany "pole.
Mon, 09 Sep 2013 19:57:42 -0400
Przez brodę Stallman Informacje o strefie czasowej!
W tym przypadku, leniwy człowiek może chcieć wykorzystać doskonałą moduł dateutil aby informacje Strefa czasowa:
from dateutil import parser
dt = parser.parse(entry["published"])
print "published", entry["published"])
print "dt", dt
print "utcoffset", dt.utcoffset()
print "tzinfo", dt.tzinfo
print "dst", dt.dst()
co daje nam:
published Mon, 09 Sep 2013 19:57:42 -0400
dt 2013-09-09 19:57:42-04:00
utcoffset -1 day, 20:00:00
tzinfo tzoffset(None, -14400)
dst 0:00:00
Można by następnie użyć timezone- świadomy obiekt datetime, który normalizuje cały czas UTC lub coś, co wydaje ci się niesamowite.
Wszystkie pola '* _parsed' z feedparsed są już znormalizowane do UTC, jak można sprawdzić w [dokumentacji do analizy daty] (https: // pythonhosted.org/feedparser/date-parsing.html?highlight=utc#supporting-additional-date-formats), więc jest to zbędne. – itorres
@Nadia Dlaczego tak jest? Twój wydaje się prostszy i wymaga mniejszej liczby modułów. –
Pamiętaj, że to się nie uda przed rokiem 1900. Współcześni ludzie nigdy nie pamiętają tego ograniczenia! – mlissner
spowoduje to utratę danych 'tm_isdst'? Myślę, że tak, wynikowy obiekt datetime pozostaje naiwny do tego stopnia, aby zwrócić 'None' na' .dst() 'nawet jeśli' struct.tm_isdst' jest '1'. – n611x007