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]
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]
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'
To get the UTC date and time:
>>> datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
'2021-01-27 00:50:03'
time.strftime("%Y-%m-%d")
? –
Graaf datetime.utcnow().strftime('%Y-%m-%d')
–
Viticulture date
has this available as well as datetime
–
Dictatorial datetime.today().strftime("%Y%m%d-%H%M%S.%f")
. Example output: '20230803-195136.416752'
. The meaning is YYYYMMDD-HHMMSS.microseconds
. That's "Year Month Day - Hours Minutes Seconds.microseconds". I use this commonly for auto-sorting log files and temporary files. –
Pincince 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'
/
? –
Peonir date.today().strftime('%Y/%m/%d')
–
Durwin .
to 'D.M.Y', the separator /
to M/D/Y
and the separator -
to Y-M-D
. Although not everybody follows these guidelines, it would help reading dates internationally as long as not everybody has switched to Y-M-D
. –
Dispel M/D/Y
, wouldn't you? –
Dispel .date
is used instead of .datetime
which requires stripping out the time. –
Graehl datetime.date.today().isoformat()
--but even shorter: str(datetime.date.today())
–
Kamat 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'
Very late answer, but you can simply use:
import time
today = time.strftime("%Y-%m-%d")
# 2024-02-22
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.
print(date.today())
>> "2018-12-16"?? lol and easily get the int values t.year,t.month,t.day+1
>> (2018, 12, 17) where t = date.today()
and the fact people don't have to call green arrow to tell them the time. oh god this is too much code to remember... –
Fennie import datetime
different than import arrow
? Sure one is built in, but if arrow
provides a more convenient format, then why not use it? –
Airframe arrow
? But, for many simple projects, it's just unnecessary. Also, in many company-internal projects, ppl need to get approval for including new libraries. –
Durwin 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')
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'
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.
now = pendulum.now()
, now = now.format('YYYY-MM-DD')
–
Omeromero from datetime import datetime
date = datetime.today().date()
print(date)
str(datetime.date.today())
–
Kamat 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.
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'
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()))
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)
If you were already using numpy
, numpy.datetime64
could be used to get today's date as well. Then simply cast it into a string (or use np.datetime_as_string
) to get its string representation in ISO 8601 format.
import numpy as np
np.datetime64('today') # numpy.datetime64('2023-09-17')
np.datetime_as_string(np.datetime64('today')) # '2023-09-17'
str(np.datetime64('today')) # '2023-09-17'
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)
© 2022 - 2025 — McMap. All rights reserved.