How do I convert a datetime.datetime object (e.g., the return value of datetime.datetime.now()) to a datetime.date object in Python?
10 Answers
Use the date() method:
datetime.datetime.now().date() 4 Comments
datetime.datetime.utcnow() and correspondingly datetime.datetime.utcnow().date()datetime.datetime.now(pytz.timezone('US/Pacific')).date()from datetime import datetime, date, timezone and one using a timezone with a non-zero offset, then datetime.now(timezone.utc).date() can be different from datetime.now().date() (the latter being also available as date.today()).From the documentation:
Return date object with same year, month and day.
Comments
You use the datetime.datetime.date() method:
datetime.datetime.now().date() Obviously, the expression above can (and should IMHO :) be written as:
datetime.date.today() 4 Comments
.today()) is the most pythonic for the stated example question.today() has an hour component too. so if you do: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')and then if losdat < datetime.datetime.today(): it will always be true because losdatwill have a time component of midnight which will fall before the timestamp of today()datetime.datetime.today() instead of datetime.date.today(), when one wants a datetime.date object?Answer updated to Python 3.7 and more
Here is how you can turn a date-and-time object
(aka datetime.datetime object, the one that is stored inside models.DateTimeField django model field)
into a date object (aka datetime.date object):
from datetime import datetime #your date-and-time object # let's supposed it is defined as datetime_element = datetime(2020, 7, 10, 12, 56, 54, 324893) # where # datetime_element = datetime(year, month, day, hour, minute, second, milliseconds) # WHAT YOU WANT: your date-only object date_element = datetime_element.date() And just to be clear, if you print those elements, here is the output :
print(datetime_element) 2020-07-10 12:56:54.324893
print(date_element) 2020-07-10
Comments
you could enter this code form for (today date & Names of the Day & hour) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')
'19-09-09 Mon 17:37:56'
and enter this code for (today date simply): datetime.date.today().strftime('%y-%m-%d') '19-09-10'
for object : datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()
1 Comment
datetime.date object, and not string, which strftime would return (ref: docs.python.org/3/library/datetime.html#datetime.date.strftime).import time import datetime # use mktime to step by one day # end - the last day, numdays - count of days to step back def gen_dates_list(end, numdays): start = end - datetime.timedelta(days=numdays+1) end = int(time.mktime(end.timetuple())) start = int(time.mktime(start.timetuple())) # 86400 s = 1 day return xrange(start, end, 86400) # if you need reverse the list of dates for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)): print datetime.datetime.fromtimestamp(dt).date() 1 Comment
Solved: AttributeError: 'Series' object has no attribute 'date' You can use as below,
df["date"] = pd.to_datetime(df["date"]).dt.date where in above code date contains both date and time (2020-09-21 22:32:00), using above code we can get only date as (2020-09-21)
1 Comment
If you are using pandas then this can solve your problem:
Lets say that you have a variable called start_time of type datetime64 in your dataframe then you can get the date part like this:
df.start_time.dt.date
datetime.datetime.now(), please note that there is a methoddatetime.date.today().from datetime import datetimeyou can just add datefrom datetime import datetime, date