Я использую:
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')