Python datetime 객체에서 연도를 추출하는 방법은 무엇입니까?


107

Python을 사용하여 현재 날짜에서 연도를 추출하고 싶습니다.

C #에서는 다음과 같습니다.

 DateTime a = DateTime.Now() 
 a.Year

Python에서 필요한 것은 무엇입니까?

답변:


156

사실 파이썬에서도 거의 같습니다. :-)

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

물론, 날짜에는 시간이 연결되어 있지 않으므로 여기에도 관심이 있다면 완전한 datetime 객체로 동일한 작업을 수행 할 수 있습니다.

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

(분명히 다르지 않지만, 당연히 연도를 잡기 전에 변수에 datetime.datetime.today ()를 저장할 수 있습니다).

한 가지 중요한 점은 시간 구성 요소가 일부 Python 버전 (제 생각에 2.5.x 트리)에서 32 비트와 64 비트 파이썬간에 다를 수 있다는 것입니다. 따라서 일부 64 비트 플랫폼에서는시 / 분 / 초와 같은 것을 찾을 수 있고 32 비트에서는시 / 분 / 초를 얻을 수 있습니다.


1
datetime.datetime.today (). year 는 Python 3에서 작동하지 않았습니다 . AttributeError : type object 'datetime.datetime'has no attribute 'datetime' 오류가 반환되었습니다 . 나는 datetime.today (). year
twumm

2
@twumm, "from datetime import datetime"으로 datetime을 가져 왔기 때문입니다. 단순히 "import datetime"을 수행했다면 솔루션이 제대로 작동합니다. 당신이 가지고있는 것과 똑같습니다.
Apteronotus

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

또는 심지어 ( Lennart가 제안했듯이 )

a = datetime.datetime.now().year

또는

a = datetime.date.today().year

1
now ()는 datetime에 더 자연 스럽지만. datetime.date.today (). year, 아마도. :)
Lennart Regebro

나는 그것에 대해 생각하지 않았고, 오늘 ()이 날의 정밀도를 의미하는 것처럼 보일 수있는 시간과 관련하여 더 "정확하게"느껴지는 것 같다. 이상하게도 (적어도 2.5.4에서) datetime.today ()와 datetime.now ()가 같은 일을합니다

그것들은 완전히 동일하지 않습니다. datetime.now ()는 timezone 객체를 받아들이는 반면, datetime.today ()는 단지 fromtimestamp (time.time ())을 호출하기 때문에 today ()는 항상 파이썬이 현지 시간대를 생각하는 모든 것에있을 것입니다. 반면에 now ()는 약간 더 흥미로운 것을 말할 수 있습니다.
Nick Bastin

17

이 질문에 대한 다른 답변은 그 자리를 차지한 것 같습니다. 이제 스택 오버플로없이 이것을 어떻게 스스로 알아낼 수 있습니까? 탭 자동 완성 기능이있는 대화 형 Python 셸인 IPython을 확인하세요 .

> 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 2011-06-07

ipython을 설치하고 싶지 않은 사람들을 위해 가능한 메서드와 속성을보기 위해 함수 나 클래스를 dir로 래핑 할 수 있습니다. 마찬가지로 dir (datetime.datetime.now)는 ipython에서 탭을 누르는 것과 같은 사용 가능한 기능을 제공합니다.
Saurav Pathak

6

(알 수없는) datetime-object에서 연도를 원하는 경우 :

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.