Объект Datetime
Как я могу получить год и месяц от объекта datetime.datetime? Вот код, с которым у меня проблемы:
w = whois.whois('http://stackru.com')
datatime = w.expiration_date
print datatime
печатный объект:
[datetime.datetime(2015, 12, 26, 0, 0), u'2015-12-26T19:18:07-07:00']
Как получить год, месяц и день из части datetime.datetime(2015, 12, 26, 0, 0). Я думаю, я мог бы использовать регулярные выражения, но должен быть лучший способ сделать это.
3 ответа
Это объект списка с одним datetime
объект в нем, плюс строка ISO 8601. Просто используйте атрибуты на первом объекте:
datatime[0].year
datatime[0].month
datatime[0].day
Демо-версия:
>>> datatime
[datetime.datetime(2015, 12, 26, 0, 0), u'2015-12-26T19:18:07-07:00']
>>> datatime[0]
datetime.datetime(2015, 12, 26, 0, 0)
>>> datatime[0].year
2015
>>> datatime[0].month
12
>>> datatime[0].day
26
Вот как вы можете получить эти поля отдельно как целые числа:
>>> import datetime
>>> dt = datetime.datetime(2015, 12, 26, 0, 0)
>>> dt.year
2015
>>> dt.month
12
>>> dt.day
26
Или, если вы хотите отформатировать только эти поля в строку, вы можете использовать strftime()
например:
>>> dt.strftime('%Y-%m-%d')
'2015-12-26'
В этом случае это выглядит как ваш datatime
Объект на самом деле представляет собой список из двух элементов, с объектом datetime в качестве первого элемента и строкой в качестве второго элемента. Таким образом, чтобы добраться до объекта datetime, вы бы просто использовали datatime[0]
вместо dt
в моем примере кода.
Объекты Datetime имеют month
, year
а также day
атрибутов.
now = datetime.datetime.now()
print(now.day)
print(now.month)
print(now.year)
Вы можете использовать календарь для получения названия месяца:
import calendar
calendar.month_name[datetime.datetime.now().month] # Output "April"
Для тех, кто ищет это сейчас, вот обновленный ответ для Python 3.7.4 с информацией о времени:
>>> datatime
datetime.datetime(2020, 2, 2, 11, 59, 59)
>>> print(datatime)
2020-02-02 11:59:59
>>> datatime.year
2020
>>> datatime.month
2
>>> datatime.day
2
>>> datatime.hour
11
>>> datatime.minute
59
>>> datatime.second
59
>>> datatime.microsecond
0