如何从Python日期时间对象中提取年份?


107

我想使用Python从当前日期中提取年份。

在C#中,这看起来像:

 DateTime a = DateTime.Now() 
 a.Year

Python需要什么?

Answers:


155

实际上在Python中几乎是一样的.. :-)

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

当然,日期没有时间,因此,如果您也很在意,您可以使用完整的datetime对象进行操作:

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

(显然没有什么不同,但是当然可以在获取年份之前将datetime.datetime.today()存储在变量中)。

需要注意的一件事是在某些python版本(我认为是2.5.x树)中,时间分量在32位和64位python之间可能有所不同。因此,在某些64位平台上,您会发现诸如小时/分钟/秒之类的信息,而在32位平台上,您会发现时/分/秒。


1
datetime.datetime.today()。year在Python 3中不起作用。它返回了AttributeError错误:类型对象'datetime.datetime'没有属性'datetime'。我不得不使用datetime.today()。year
twumm

1
@twumm,这是因为您将datetime导入为“ from 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.date.today()。year,也许。:)
Lennart Regebro

我没有考虑过这一点,我想它确实相对于时间更“准确”,在今天,now()似乎暗示着几天的精度。很奇怪(至少在2.5.4中)datetime.today()和datetime.now()做同样的事情

它们并不完全相同,datetime.now()接受一个时区对象,而datetime.today()只是从timestamp(time.time())调用,因此Today()将始终处于Python认为您的本地时区的任何位置是的,而您可以获得now()来告诉您一些更有趣的事情。
尼克·巴斯汀

17

这个问题的其他答案似乎很快就到了。现在,您如何自己解决这个问题而又没有堆栈溢出?请查看IPython,它是一个具有选项卡自动完成功能的交互式Python shell。

> 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.

几次按Tab键,将提示您“ 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年

对于那些不想安装ipython的人,您可以使用dir包装任何函数或类,以查看可能的方法和属性。像dir(datetime.datetime.now)会为您提供可用的功能,例如在ipython中按tab即可。
Saurav Pathak

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.