Как извлечь год из объекта datetime Python?


108

Я хотел бы извлечь год из текущей даты с помощью Python.

В C # это выглядит так:

 DateTime a = DateTime.Now() 
 a.Year

Что требуется в Python?

Ответы:


158

На самом деле в Python почти то же самое .. :-)

import datetime
year = datetime.date.today().year

Конечно, с датой не связано время, поэтому, если вас это тоже волнует, вы можете сделать то же самое с полным объектом datetime:

import datetime
year = datetime.datetime.today().year

(Очевидно, что ничем не отличается, но вы, конечно, можете сохранить datetime.datetime.today () в переменной перед тем, как получить год).

Следует отметить один ключевой момент: компоненты времени могут различаться между 32-битными и 64-битными питонами в некоторых версиях Python (я думаю, дерево 2.5.x). Таким образом, на некоторых 64-битных платформах вы найдете такие вещи, как часы / минуты / секунды, а на 32-битных - часы / минуты / секунды.


1
datetime.datetime.today (). year не работал для Python 3. Он возвратил ошибку AttributeError: объект типа 'datetime.datetime' не имеет атрибута 'datetime' . Мне пришлось использовать datetime.today (). Year
— twumm

2
@twumm, это потому, что вы импортировали datetime как «from datetime import datetime». Если вы сделали просто «импорт даты и времени», решение будет работать нормально. Он точно такой же, как у вас.
— Apteronotus

26
import datetime
a = datetime.datetime.today().year

или даже (как предложил Леннарт )

a = datetime.datetime.now().year

или даже

a = datetime.date.today().year

1
Хотя now () кажется более естественным в datetime. datetime.date.today (). год, может быть. :)
— Леннарт Регебро

Я не думал об этом, и я полагаю, что это кажется более "точным" относительно времени, где сегодня () может показаться, что это означает точность дней. Странно, что (по крайней мере, в 2.5.4) datetime.today () и datetime.now () делают одно и то же

Они не совсем то же самое, datetime.now () принимает объект часового пояса, тогда как datetime.today () просто вызывает fromtimestamp (time.time ()), и поэтому сегодня () всегда будет в том, что Python считает вашим местным часовым поясом есть, тогда как вы можете получить now (), чтобы рассказать вам немного более интересные вещи.
— Ник Бастин,

17

Другие ответы на этот вопрос, кажется, попадают в точку. Как бы вы сами в этом разобрались без переполнения стека? Проверьте IPython , интерактивную оболочку Python , который имеет вкладку автозаполнения.

> ipython
import Python 2.5 (r25:51908, Nov  6 2007, 16:54:01)
Type "copyright", "credits" or "license" for more information.

IPython 0.8.2.svn.r2750 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: import datetime
In [2]: now=datetime.datetime.now()
In [3]: now.

нажмите вкладку несколько раз, и вам будут предложены элементы объекта «сейчас»:

now.__add__           now.__gt__            now.__radd__          now.__sub__           now.fromordinal       now.microsecond       now.second            now.toordinal         now.weekday
now.__class__         now.__hash__          now.__reduce__        now.astimezone        now.fromtimestamp     now.min               now.strftime          now.tzinfo            now.year
now.__delattr__       now.__init__          now.__reduce_ex__     now.combine           now.hour              now.minute            now.strptime          now.tzname
now.__doc__           now.__le__            now.__repr__          now.ctime             now.isocalendar       now.month             now.time              now.utcfromtimestamp
now.__eq__            now.__lt__            now.__rsub__          now.date              now.isoformat         now.now               now.timetuple         now.utcnow
now.__ge__            now.__ne__            now.__setattr__       now.day               now.isoweekday        now.replace           now.timetz            now.utcoffset
now.__getattribute__  now.__new__           now.__str__           now.dst               now.max               now.resolution        now.today             now.utctimetuple

и вы увидите, что now.year является членом объекта «сейчас».


2
Кроме того, это: docs.python.org/library/datatypes.html Но спасибо, я не знал этого о IPython

2
Престижность за решение проблем - дополнение к фактическому решению.
— Iceland_jack

Для тех, кто не хочет устанавливать ipython, вы можете просто обернуть любую функцию или класс с помощью dir, чтобы увидеть возможные методы и атрибуты. Например, dir (datetime.datetime.now) предоставит вам доступные функции, такие как нажатие вкладки в ipython.
— Саурав Патхак,

6

Если вам нужен год из (неизвестного) объекта datetime:

tijd = datetime.datetime(9999, 12, 31, 23, 59, 59)

>>> tijd.timetuple()
time.struct_time(tm_year=9999, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=59, tm_sec=59, tm_wday=4, tm_yday=365, tm_isdst=-1)
>>> tijd.timetuple().tm_year
9999
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.