I'm using:
str(datetime.datetime.today()).split()[0]
to return today's date in the YYYY-MM-DD
format.
Is there a less crude way to achieve this?
You can use strftime:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Additionally, for anyone also looking for a zero-padded Hour, Minute, and Second at the end: (Comment by Gabriel Staples)
datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
There's even simpler way than the accepted answer; valid both for Python 2 & 3.
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
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
.
I always use the isoformat()
function 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 standard format as well.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Other answers suggest the use of python's datetime.datetime
, but as @Bill Bell said, there are other libraries that offer simpler datetime
interfaces either as a service or as part of a larger ecosystem of APIs. Here are two such libraries that make working with datetimes
very simple.
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')
PENDULUM
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'
I was able to get the accepted answer to work once I imported datetime
and then removed "datetime.
" from the command. Here's what worked for me (python 3.6):
from datetime import datetime
date = datetime.today().strftime('%Y-%m-%d')
This is the easiest way to get date in python.
from datetime import date
todayDate = date.today()
print(todayDate) #prints today's date for eg. 2019-07-09
You don't even need to install any packages. These all are already inbuilt within 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')
来源:https://stackoverflow.com/questions/32490629/getting-todays-date-in-yyyy-mm-dd-in-python