DATUM AAN DE DATETIME IN PYTHON

Is er een ingebouwde methode voor het converteren van een datenaar een datetimein Python, bijvoorbeeld het krijgen van de datetimevoor de middernacht van de opgegeven datum? De tegenovergestelde conversie is eenvoudig: datetimeheeft een .date()-methode.

Moet ik echt handmatig bellen datetime(d.year, d.month, d.day)?


Antwoord 1, Autoriteit 100%

U kunt datetime.combine(date, time); Voor de tijd maak je een datetime.timeobject geïnitialiseerd tot middernacht.

from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.time())

Antwoord 2, Autoriteit 17%

Er zijn verschillende manieren, hoewel ik geloof dat degene die je vermeldt (en een hekel aan) is de meest leesbare.

>>> t=datetime.date.today()
>>> datetime.datetime.fromordinal(t.toordinal())
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(t.year, t.month, t.day)
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(*t.timetuple()[:-4])
datetime.datetime(2009, 12, 20, 0, 0)

enzovoort – maar eigenlijk scharnieren ze allemaal op passende informatie uit de dateobjecten en ploegen in de geschikte COR of classificatie voor datetime.


Antwoord 3, Autoriteit 10%

Het geaccepteerde antwoord is correct, maar ik zou liever geen datetime.min.time()gebruiken omdat het voor mij niet duidelijk is wat het precies doet. Als het voor jou duidelijk is, dan meer kracht voor jou. Ik denk ook zo over de timetuple-methode en de afhankelijkheid van de bestelling.

Naar mijn mening is de meest leesbare, expliciete manier om dit te doen zonder erop te vertrouwen dat de lezer zeer vertrouwd is met de datetimemodule-API:

from datetime import date, datetime
today = date.today()
today_with_time = datetime(
    year=today.year, 
    month=today.month,
    day=today.day,
)

Dat is mijn mening over “expliciet is beter dan impliciet.”


Antwoord 4, autoriteit 5%

U kunt de methode date.timetuple()gebruiken en operator *uitpakken.

args = d.timetuple()[:6]
datetime.datetime(*args)

Antwoord 5

Tegenwoordig 2016, denk ik dat de panda’s Timestamp de schoonste oplossing biedt:

from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)

Timestamp is het panda-equivalent van datetime en kan er in de meeste gevallen mee worden uitgewisseld. Controleer:

from datetime import datetime
isinstance(pd.Timestamp(d), datetime)

Maar als je echt een vanille-datetime wilt, kun je nog steeds het volgende doen:

pd.Timestamp(d).to_datetime()

Tijdstempels zijn veel krachtiger dan datetimes, onder andere bij het omgaan met tijdzones. Eigenlijk zijn tijdstempels zo krachtig dat het jammer is dat ze zo slecht gedocumenteerd zijn …


Antwoord 6

Een manier om van datum naar DATETIME te converteren die nog niet is genoemd:

from datetime import date, datetime
d = date.today()
datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d')

Antwoord 7

U kunt easy_date gebruiken om het gemakkelijk te maken:

import date_converter
my_datetime = date_converter.date_to_datetime(my_date)

Antwoord 8

Moet ik echt de datetime (D.YEAR, D.MONTH, D.DAG)

handmatig bellen

Nee, u wilt liever

date_to_datetime(dt)

waarmee u eenmaal in sommige utils/time.pyin uw project kunt implementeren:

from typing import Optional
from datetime import date, datetime
def date_to_datetime(
    dt: date,
    hour: Optional[int] = 0,
    minute: Optional[int] = 0, 
    second: Optional[int] = 0) -> datetime:
    return datetime(dt.year, dt.month, dt.day, hour, minute, second)

Antwoord 9

Als u iets snel nodig hebt, datetime_object.date()geeft u een datum van een datetime-object.


Antwoord 10

Ik ben een newbie naar Python. Maar deze code werkte voor mij die de opgegeven input converteert die ik aan DateTime verstrekt. Hier is de code. Corrigeer me als ik het mis heb.

import sys
from datetime import datetime
from time import mktime, strptime
user_date = '02/15/1989'
if user_date is not None:
     user_date = datetime.strptime(user_date,"%m/%d/%Y")
else:
     user_date = datetime.now()
print user_date

Other episodes