Я использую:
str(datetime.datetime.today()).split()[0]
вернуть сегодняшнюю дату в YYYY-MM-DD
.
Есть ли менее грубый способ добиться этого?
Я использую:
str(datetime.datetime.today()).split()[0]
вернуть сегодняшнюю дату в YYYY-MM-DD
.
Есть ли менее грубый способ добиться этого?
Вы можете использовать strftime:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Кроме того, для тех, кто ищет ноль, минуты и секунды в конце: (Комментарий Габриэля Стейплса)
datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
Там даже проще, чем принятый ответ; действительны как для Python 2, так и для 3.
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
Datetime просто прекрасна, если вам нравится запоминать забавные коды. Вы предпочитаете простоту?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Этот модуль достаточно умен, чтобы понять, что вы имеете в виду.
Просто сделайте pip install arrow
.
Для этого я всегда использую isoformat()
.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Обратите внимание, что это также работает с объектами datetime, если вам нужно время в стандартном формате.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Другие ответы предполагают использование python datetime.datetime
, но, как сказал @Bill Bell, есть и другие библиотеки, которые предлагают более простые интерфейсы datetime
либо как сервис, либо как часть более обширной экосистемы API. Вот две такие библиотеки, которые упрощают работу с datetimes
.
Вы можете использовать pd.to_datetime
из библиотеки панд. Здесь представлены различные варианты, в зависимости от того, что вы хотите вернуть.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Как объект даты и времени Python,
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Как форматированная строка даты,
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'
Чтобы получить только дату из отметки времени, вызовите Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Помимо to_datetime
, вы можете напрямую создавать экземпляр объекта Timestamp
используя:
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)
Если вы хотите, чтобы ваш часовой пояс знал время, передайте часовой пояс аргументу tz
.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Если вы работаете с маятником, есть несколько интересных вариантов. Вы можете получить текущую временную метку, используя now()
или сегодняшнюю дату, используя 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'))
Кроме того, вы также можете получить дату tomorrow()
или yesterday()
напрямую, не прибегая к каким-либо дополнительным арифметическим действиям.
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'))
Доступны различные варианты форматирования.
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'
Я смог получить принятый ответ для работы, как только я импортировал datetime
а затем удалил " datetime.
" Из команды. Вот что у меня сработало (python 3.6):
from datetime import datetime
date = datetime.today().strftime('%Y-%m-%d')
Это самый простой способ получить дату в питоне.
from datetime import date
todayDate = date.today()
print(todayDate) #prints today date for eg. 2019-07-09
Вам даже не нужно устанавливать какие-либо пакеты. Все это уже встроено в Python.
Вы можете использовать,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
Я предпочитаю это, потому что это просто, но может быть как-то неэффективно и глючит. Вы должны проверить код завершения команды оболочки, если вы хотите программу, защищенную от ошибок.
os.system('date +%Y-%m-%d')