Як витягнути рік з об’єкта дати Python?


107

Я хотів би витягнути рік із поточної дати за допомогою Python.

У C # це виглядає так:

 DateTime a = DateTime.Now() 
 a.Year

Що потрібно в Python?

Відповіді:


155

Насправді майже так само в Python .. :-)

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

Звичайно, дата не пов’язана з часом, тож якщо ви теж переймаєтесь цим, ви можете зробити те ж саме з повним об'єктом дати:

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

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

Важливо відзначити, що часові компоненти можуть відрізнятись між 32-бітними та 64-бітовими пітонами в деяких версіях python (я думаю, дерево 2,5.x). Таким чином, ви знайдете такі речі, як година / хв / сек на деяких 64-бітних платформах, тоді як ви отримаєте годину / хвилину / секунду на 32-розрядному.


1
datetime.datetime.today (). рік не працював для Python 3. Він повернув помилку AttributeError: тип об’єкта 'datetime.datetime' не має атрибута 'datetime' . Мені довелося скористатися datetime.today (). Рік
twumm

2
@twumm, це було через те, що ви імпортували datetime як "from datetime import date datetime". Якщо ви просто зробили "імпортувати дату часу", рішення буде добре працювати. Це точно так само, як у вас.
Apteronotus

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

або навіть (як запропонував Леннарт )

a = datetime.datetime.now().year

або навіть

a = datetime.date.today().year

1
Хоча зараз () відчуває себе більш природним у побачення. datetime.date.today (). рік, можливо. :)
Леннарт Регебро

Я не думав про це, і, мабуть, він відчуває себе більш "точним" щодо часу, де сьогодні () може здатися, що це означає точність днів. Дивно, що (принаймні в 2.5.4) datetime.today () і datetime.now () роблять те саме

Вони не зовсім однакові, datetime.now () приймає об'єкт часового поясу, в той час як datetime.today () просто дзвонить з часової мітки (time.time ()), і тому сьогодні () завжди буде в будь-якому місці, на який Python вважає ваш місцевий часовий пояс є, тоді як ви можете зараз () розповісти трохи цікавіші речі.
Нік Бастін

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 є членом об’єкта "now".


2
Також це: docs.python.org/library/datatypes.html Але дякую, я не знав цього про IPython

2
Кудо для вирішення проблеми - доповнення фактичного рішення.
Iceland_jack

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

6

Якщо ви хочете рік з (невідомо) датою-об’єктом дати:

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.