Я використовую:
str(datetime.datetime.today()).split()[0]
щоб повернути сьогоднішню дату у YYYY-MM-DD
форматі.
Чи є менш грубий спосіб цього досягти?
Я використовую:
str(datetime.datetime.today()).split()[0]
щоб повернути сьогоднішню дату у YYYY-MM-DD
форматі.
Чи є менш грубий спосіб цього досягти?
Відповіді:
Ви можете використовувати стрімкінг :
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" ?? хай і легко отримують значення int t.year,t.month,t.day+1
>> (2018, 12, 17), де t = date.today()
людям не потрібно телефонувати зеленою стрілкою, щоб сказати їм час. о боже, це занадто багато коду, щоб пам’ятати ...
import datetime
відрізняється від import arrow
? Впевнений, що він вбудований, але якщо він arrow
забезпечує більш зручний формат, то чому б не використовувати його?
arrow
? Але для багатьох простих проектів це просто непотрібно. Крім того, у багатьох внутрішніх проектах компанії, ppl потрібно отримати схвалення для включення нових бібліотек.
Я завжди використовую isoformat()
для цього функцію.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Зауважте, що це також працює на об'єктах дати, якщо вам також потрібен час у стандартному форматі.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Інші відповіді пропонують використовувати python's 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')
Як об’єкт дати пітону ,
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)
Якщо ви хочете повідомити про часовий пояс Timestamp, передайте часовий пояс 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'
Дуже пізня відповідь, але ви можете використовувати:
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')