10

Как преобразовать datetime в date?

9

Как преобразовать объект datetime.datetime (например, значение, возвращаемое datetime.datetime.now()) в объект datetime.date в Python?

5 ответ(ов)

0

Можно преобразовать объект datetime в объект date, используя метод date() объекта datetime. Вот пример:

<datetime_object>.date()
0

Вы используете метод datetime.datetime.date():

datetime.datetime.now().date()

Очевидно, что данное выражение можно (и, на мой взгляд, следует 😃 записать так:

datetime.date.today()

Первый вариант, хоть и работает, немного избыточен, так как datetime.date.today() более лаконичен и читабелен, не создавая лишнего объекта datetime.datetime.

0

Вы можете использовать следующий код для получения (дату сегодняшнего дня, названия дней и часы):

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, предоставляя разные форматы и представления.

0

Вы можете использовать следующий код для генерации списка дат, начиная с указанного дня и отступая на заданное количество дней. В вашем примере используется 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, не стесняйтесь задавать их.

0

Вы можете использовать метод 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, чтобы этот метод сработал правильно.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь