Getting today's date in YYYY-MM-DD in Python?

PythonDatetimePython Datetime

Python Problem Overview


Is there a nicer way than the following to return today's date in the YYYY-MM-DD format?

str(datetime.datetime.today()).split()[0]

Python Solutions


Solution 1 - Python

Use strftime:

>>> from datetime import datetime
>>> datetime.today().strftime('%Y-%m-%d')
'2021-01-26'

To also include a zero-padded Hour:Minute:Second at the end:

>>> datetime.today().strftime('%Y-%m-%d %H:%M:%S')
'2021-01-26 16:50:03'

Solution 2 - Python

You can use datetime.date.today() and convert the resulting datetime.date object to a string:

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'

Solution 3 - Python

I always use the isoformat() method for this.

from datetime import date    
today = date.today().isoformat()
print(today)  # '2018-12-05'

Note that this also works on datetime objects if you need the time in the standard ISO 8601 format as well.

from datetime import datetime
now = datetime.today().isoformat()
print(now)  # '2018-12-05T11:15:55.126382'

Solution 4 - Python

Datetime is just lovely if you like remembering funny codes. Wouldn't you prefer simplicity?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'

This module is clever enough to understand what you mean.

Just do pip install arrow.

Addendum: In answer to those who become exercised over this answer let me just say that arrow represents one of the alternative approaches to dealing with dates in Python. That's mostly what I meant to suggest.

Solution 5 - Python

Very late answer, but you can simply use:

import time
today = time.strftime("%Y-%m-%d")
# 2022-01-30

Solution 6 - Python

Are you working with Pandas?

You can use pd.to_datetime from the pandas library. Here are various options, depending on what you want returned.

import pandas as pd

pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')

As a python datetime object,

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

As a formatted date string,

pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'

# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'

To get just the date from the timestamp, call Timestamp.date.

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)

Aside from to_datetime, you can directly instantiate a Timestamp object using,

pd.Timestamp('today')  # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')

pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)

If you want to make your Timestamp timezone aware, pass a timezone to the tz argument.

pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

Yet another date parser library: Pendulum

This one's good, I promise.

If you're working with pendulum, there are some interesting choices. You can get the current timestamp using now() or today's date using today().

import pendulum 

pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))

pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

Additionally, you can also get tomorrow() or yesterday()'s date directly without having to do any additional timedelta arithmetic.

pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

There are various formatting options available.

pendulum.now().to_date_string()
# '2019-03-27'

pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'

pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'

Rationale for this answer

A lot of pandas users stumble upon this question because they believe it is a python question more than a pandas one. This answer aims to be useful to folks who are already using these libraries and would be interested to know that there are ways to achieve these results within the scope of the library itself.

If you are not working with pandas or pendulum already, I definitely do not recommend installing them just for the sake of running this code! These libraries are heavy and come with a lot of plumbing under the hood. It is not worth the trouble when you can use the standard library instead.

Solution 7 - Python

from datetime import datetime

date = datetime.today().date()

print(date)

Solution 8 - Python

If you need e.g. pacific standard time (PST) you can do

from datetime import datetime
import pytz

tz = pytz.timezone('US/Pacific')
datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
# '2021-09-02 10:21:41'

Solution 9 - Python

Use f-strings, they are usually the best choice for any text-variable mix:

from datetime import date
print(f'{date.today():%Y-%m-%d}')

Taken from Python f-string formatting not working with strftime inline which has the official links as well.

Solution 10 - Python

You can use,

>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'

Solution 11 - Python

my code is a little complicated but I use it a lot

strftime("%y_%m_%d", localtime(time.time()))

reference:'https://strftime.org/

you can look at the reference to make anything you want for you what YYYY-MM-DD just change my code to:

strftime("%Y-%m-%d", localtime(time.time()))

Solution 12 - Python

This works:

from datetime import date
today =date.today()

Output in this time: 2020-08-29

Additional:

this_year = date.today().year
this_month = date.today().month
this_day = date.today().day
print(today)
print(this_year)
print(this_month)
print(this_day)

Solution 13 - Python

To get day number from date is in python

for example:19-12-2020(dd-mm-yyy)order_date we need 19 as output

order['day'] = order['Order_Date'].apply(lambda x: x.day)

Solution 14 - Python

I prefer this, because this is simple, but maybe somehow inefficient and buggy. You must check the exit code of shell command if you want a strongly error-proof program.

os.system('date +%Y-%m-%d')

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPydermanView Question on Stackoverflow
Solution 1 - Pythondiegueus9View Answer on Stackoverflow
Solution 2 - PythonkmonsoorView Answer on Stackoverflow
Solution 3 - PythonJdHView Answer on Stackoverflow
Solution 4 - PythonBill BellView Answer on Stackoverflow
Solution 5 - PythonPedro LobitoView Answer on Stackoverflow
Solution 6 - Pythoncs95View Answer on Stackoverflow
Solution 7 - PythonDon DominicView Answer on Stackoverflow
Solution 8 - PythonNic ScozzaroView Answer on Stackoverflow
Solution 9 - Pythonquestionto42standswithUkraineView Answer on Stackoverflow
Solution 10 - PythonMohideen bin MohammedView Answer on Stackoverflow
Solution 11 - PythonSway WuView Answer on Stackoverflow
Solution 12 - PythonnamjooView Answer on Stackoverflow
Solution 13 - Pythonuser14855658View Answer on Stackoverflow
Solution 14 - PythonplhnView Answer on Stackoverflow