Як перетворити дату на дату (в Python)?


646

Як перетворити datetime.datetimeоб'єкт (наприклад, яке значення datetime.datetime.now())для datetime.dateоб'єкта в Python?


16
Якщо вам це просто потрібно datetime.datetime.now(), зауважте, що існує метод datetime.date.today().
Тьєррі Дж

якщо ви вже імпортували дату, наприклад, from datetime import datetimeви можете просто додати датуfrom datetime import datetime, date
Джош

Відповіді:


984

Використовуйте date()метод:

datetime.datetime.now().date()

14
Потрапити в UTC, що може бути дуже корисно -> datetime.datetime.utcnow()і відповідноdatetime.datetime.utcnow().date()
Nick Brady

2
Дякуємо @SeanColombo, поточна дата в конкретному часовому поясі повинна бутиdatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Моніка для генерального директора


62

Ви використовуєте datetime.datetime.date()метод:

datetime.datetime.now().date()

Очевидно, що вираз вище може (і чи слід IMHO :) записати так:

datetime.date.today()

14
не плутай хлопця.
fiatjaf

1
якщо бути справедливим, ця відповідь (використання .today()) є найбільш пітонічною для наведеного прикладу питання.
Даннід

2
Якщо ви використовуєте сьогодні, будьте обережні, порівнюючи побачення. today()також має компонент години . так що, якщо ви це зробите: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')і тоді if losdat < datetime.datetime.today():це завжди буде правдою, оскільки losdatбуде складова часу півночі, яка припаде до часової позначкиtoday()
Денніс Декоен,

3
@DennisDecoene: навіщо використовувати datetime.datetime.today()замість datetime.date.today(), коли хочеться datetime.dateоб'єкт?
tzot

@tzot Так, саме це я хотів зазначити, але було незрозумілим.
Dennis Decoene

45

Ви можете перетворити об'єкт datetime в дату за допомогою методу date () об'єкта time date, як описано нижче:

<datetime_object>.date()

3
import time
import datetime

# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
  start = end - datetime.timedelta(days=numdays+1)
  end   = int(time.mktime(end.timetuple()))
  start = int(time.mktime(start.timetuple()))
  # 86400 s = 1 day
  return xrange(start, end, 86400)

# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
    print datetime.datetime.fromtimestamp(dt).date()

2
Ви мали на увазі опублікувати цю відповідь тут? Мені здається, що ти відповідаєш на інше питання.
Усі працівники найважливіші

2

ви можете ввести цю кодову форму для (сьогоднішня дата та назви дня та години) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19 -09-09 пн 17:37:56 '

і введіть цей код для ( сьогоднішня дата просто) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

для об'єкта: datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()


ОП хотів отримати datetime.dateоб’єкт, а не рядок, який strftimeповертається (ref: docs.python.org/3/library/datetime.html#datetime.date.strearch ).
Гжегож Скібінський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.