Я использую:
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')
datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
time.strftime("%Y-%m-%d")
?
datetime.utcnow().strftime('%Y-%m-%d')
date
это доступно, а такжеdatetime
Вы можете использовать datetime.date.today()
и преобразовать полученный datetime.date
объект в строку:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
на «DMY», разделитель /
на M/D/Y
и разделитель -
на Y-M-D
. Хотя не все следуют этим рекомендациям, это помогло бы читать даты на международном уровне, если не все переключились на них Y-M-D
.
Datetime просто прекрасно, если вам нравится вспоминать смешные коды. Вы бы не предпочли простоту?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Этот модуль достаточно умен, чтобы понять, что вы имеете в виду .
Просто делай pip install arrow
.
Приложение: Отвечая на вопрос тех, кто начал заниматься этим вопросом, позвольте мне сказать, что стрелка представляет один из альтернативных подходов к работе с датами в Python. Это в основном то, что я хотел предложить.
print(date.today())
>> "2018-12-16" ?? LOL и легко получить значения INT t.year,t.month,t.day+1
>> (2018, 12, 17), где t = date.today()
и факт, люди не должны вызывать зеленую стрелку, чтобы сообщить им время. о боже, это слишком много кода, чтобы помнить ...
import datetime
отличается от import arrow
? Конечно, он встроен, но если он arrow
предоставляет более удобный формат, то почему бы не использовать его?
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()
свидание непосредственно, не делая никакой дополнительной арифметики timedelta.
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'
Очень поздний ответ, но вы можете использовать:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Ты можешь использовать,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
, все еще лучше
Я предпочитаю это, потому что это просто, но может быть как-то неэффективно и глючит. Вы должны проверить код завершения оболочки команды , если вы хотите сильно ошибки доказательства программы.
os.system('date +%Y-%m-%d')