Как преобразовать datetime в date?
Как преобразовать объект datetime.datetime
(например, значение, возвращаемое datetime.datetime.now()
) в объект datetime.date
в Python?
5 ответ(ов)
Можно преобразовать объект datetime в объект date, используя метод date() объекта datetime. Вот пример:
<datetime_object>.date()
Вы используете метод datetime.datetime.date()
:
datetime.datetime.now().date()
Очевидно, что данное выражение можно (и, на мой взгляд, следует 😃 записать так:
datetime.date.today()
Первый вариант, хоть и работает, немного избыточен, так как datetime.date.today()
более лаконичен и читабелен, не создавая лишнего объекта datetime.datetime
.
Вы можете использовать следующий код для получения (дату сегодняшнего дня, названия дней и часы):
datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')
Это даст вам пример вывода в формате: '19-09-09 Mon 17:37:56'
.
Чтобы получить (просто сегодняшнюю дату), вы можете использовать:
datetime.date.today().strftime('%y-%m-%d')
Вывод будет в формате: '19-09-10'
.
Для получения различных объектов даты и времени вы можете использовать следующие методы:
Получение текущей даты:
datetime.datetime.now().date()
Получение даты на момент запуска скрипта (сегодня):
datetime.datetime.today().date()
Получение текущей даты в UTC:
datetime.datetime.utcnow().date()
Получение текущего времени:
datetime.datetime.today().time()
Получение текущего времени в UTC:
datetime.datetime.utcnow().time()
Эти методы позволяют вам работать с датой и временем в Python, предоставляя разные форматы и представления.
Вы можете использовать следующий код для генерации списка дат, начиная с указанного дня и отступая на заданное количество дней. В вашем примере используется time.mktime
для преобразования объектов datetime
в временные метки, после чего создается диапазон с шагом в один день (86400 секунд).
Обратите внимание, что xrange
работает только в Python 2. Если вы используете Python 3, замените xrange
на range
.
Вот исправленный код, который будет работать в Python 3:
import time
import datetime
# Используем mktime для обхода на один день
# end - последняя дата, numdays - количество дней для обратного отсчета
def gen_dates_list(end, numdays):
start = end - datetime.timedelta(days=numdays+1)
end_timestamp = int(time.mktime(end.timetuple()))
start_timestamp = int(time.mktime(start.timetuple()))
# 86400 секунд = 1 день
return range(start_timestamp, end_timestamp, 86400)
# Если нужно перевернуть список дат
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
print(datetime.datetime.fromtimestamp(dt).date())
Если у вас есть дополнительные вопросы о работе с датами в Python, не стесняйтесь задавать их.
Вы можете использовать метод strftime
для форматирования даты в вашем DataFrame. В случае, если вы хотите применить это к столбцу, можно воспользоваться lambda
функцией вместе с методом apply()
. Вот пример, как это сделать:
import pandas as pd
# Пример DataFrame
data = pd.DataFrame({'date_column': [pd.Timestamp('2023-01-01'), pd.Timestamp('2023-02-01')]})
# Применяем strftime через lambda для форматирования
data['formatted_date'] = data['date_column'].apply(lambda x: x.strftime('%y-%m-%d'))
print(data)
В данном примере мы добавляем новый столбец formatted_date
, который содержит даты в формате 'yy-mm-dd'. Убедитесь, что ваш столбец с датами действительно имеет тип datetime
, чтобы этот метод сработал правильно.
Существует ли список временных зон Pytz?
Преобразование строки unix timestamp в читаемую дату
Получение текущей даты в формате YYYY-MM-DD в Python
Как получить день недели по заданной дате?
Как конвертировать секунды в часы, минуты и секунды?