Як витягнути рік з об’єкта дати 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.