Czy istnieje wbudowana metoda konwersji a date
na datetime
Pythona, na przykład uzyskanie datetime
północy danej daty? Odwrotna konwersja jest łatwa: datetime
ma .date()
metodę.
Czy naprawdę muszę ręcznie dzwonić datetime(d.year, d.month, d.day)
?
.datetime()
metodę; głupie jest to, że nie mają takiej metody.datetime.from_date()
konstruktor.Odpowiedzi:
Możesz użyć
datetime.combine(date, time)
; na razie tworzyszdatetime.time
obiekt zainicjowany do północy.źródło
datetime.combine(d, time())
time.time
coś innego niż adatetime.time
.Istnieje kilka sposobów, choć uważam, że ten, o którym wspominasz (i którego nie lubisz), jest najbardziej czytelny.
i tak dalej - ale w gruncie rzeczy wszystkie polegają na odpowiednim wydobyciu informacji z
date
obiektu i włożeniu go z powrotem do odpowiedniego ctor lub funkcji klasydatetime
.źródło
datetime(d.year, d.month, d.day)
wydaje się o wiele bardziej czytelny niż zaakceptowana odpowiedźdatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
wydaje się czystszy (sugerowany przez@
larham1 )datetime(d.year, d.month, d.day)
jest to bardziej oczywiste (data i godzina bez komponentu czasu). Jest to drobna kwestia, a użycie nazwy zmiennej, takiej jak „północ”, wyraźnie pokazuje, jaki jest wynik, nawet jeśli czytelnik nie wie, codatetime.time.min
reprezentuje.datetime(d.year, d.mont, d.day)
jest nie tylko bardziej oczywiste, ale także szybsze .Przyjęta odpowiedź jest poprawna, ale wolałbym unikać używania,
datetime.min.time()
ponieważ nie jest dla mnie oczywiste, co dokładnie robi. Jeśli to dla ciebie oczywiste, to więcej mocy dla ciebie. Tak samo myślę otimetuple
metodzie i zaufaniu do zamówienia.Moim zdaniem najbardziej czytelnym, wyraźnym sposobem na zrobienie tego bez polegania na tym, że czytelnik dobrze zna
datetime
interfejs API modułu jest:Takie jest moje zdanie „wyraźne jest lepsze niż niejawne”.
źródło
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
funkcja on-line tej odpowiedzi.datetime
mieć świadomość strefy czasowej. W takim przypadku możesz na przykładimport pytz
dodaćtzinfo=pytz.timezone('Europe/London')
.Możesz użyć
date.timetuple()
metody i rozpakować operatora*
.źródło
datetime.combine
Używałem tego przed odkryciem odpowiedzi @ kiamlaluno. Myślę, że jest dość pytoniczny, zwłaszcza biorąc pod uwagę, że skonstruowaniedatetime.time
obiektu prawdopodobnie i tak będzie wyglądaćdatetime.time(*map(int,"H:M:S".split(":")))
...Dziś, w 2016 roku, myślę, że najczystsze rozwiązanie zapewnia pandas Timestamp:
Znacznik czasu jest pandą równoważną datetime i jest z nim wymienny w większości przypadków. Czek:
Ale jeśli naprawdę chcesz waniliową datę i godzinę, nadal możesz:
Znaczniki czasu są znacznie potężniejsze niż czasy danych, między innymi w przypadku stref czasowych. W rzeczywistości znaczniki czasu są tak potężne, że szkoda, że są tak słabo udokumentowane ...
źródło
Jeden ze sposobów konwersji z daty na datę i godzinę, o którym jeszcze nie wspomniano:
źródło
Aby ułatwić, możesz użyć easy_date :
źródło
Jeśli potrzebujesz czegoś szybkiego,
datetime_object.date()
podaje datę obiektu typu data-godzina.źródło
date
dodatetime
.datetime
.date()
Jestem nowicjuszem w Pythonie. Ale ten kod działał dla mnie, który konwertuje określone dane wejściowe, które dostarczam na datetime. Oto kod. Popraw mnie, jeśli się mylę.
źródło
datetime.date()
obiekt, a nie ciąg znaków .