Як перетворити дату на дату (в 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.