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

gro*_*rtn 83 python datetime

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

在C#中,这看起来像:

 DateTime a = DateTime.Now() 
 a.Year
Run Code Online (Sandbox Code Playgroud)

Python需要什么?

Nic*_*tin 116

事实上它在Python中几乎相同.. :-)

import datetime
year = datetime.date.today().year
Run Code Online (Sandbox Code Playgroud)

当然,date没有时间关联,所以如果你也关心它,你可以对完整的datetime对象做同样的事情:

import datetime
year = datetime.datetime.today().year
Run Code Online (Sandbox Code Playgroud)

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

需要注意的一件事是,在某些python版本中,时间组件在32位和64位pyth之间可能不同(我认为是2.5.x树).所以你会在某些64位平台上找到像小时/分钟/秒这样的东西,而在32位上你会得到小时/分钟/秒.

  • @twumm,那是因为您将日期时间导入为“from datetime import datetime”。如果您只是简单地执行了“导入日期时间”,那么该解决方案将正常工作。它和你拥有的一模一样。 (5认同)
  • **datetime.datetime.today().year** 不适用于 Python 3。它返回错误 _AttributeError: type object 'datetime.datetime' has no attribute 'datetime'_。我必须使用 **datetime.today().year** (3认同)

小智 19

import datetime
a = datetime.datetime.today().year
Run Code Online (Sandbox Code Playgroud)

甚至(正如Lennart建议的那样)

a = datetime.datetime.now().year
Run Code Online (Sandbox Code Playgroud)

甚至

a = datetime.date.today().year
Run Code Online (Sandbox Code Playgroud)

  • 尽管 now() 在日期时间上感觉更自然。datetime.date.today().year,也许吧。:) (3认同)

Pet*_*ete 13

这个问题的其他答案似乎点击了它.现在如何在没有堆栈溢出的情况下为自己解决这个问题?查看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.
Run Code Online (Sandbox Code Playgroud)

按几次选项卡,系统会提示您显示"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
Run Code Online (Sandbox Code Playgroud)

你会看到now.year是"now"对象的成员.

  • 另外,这个:http://docs.python.org/library/datatypes.html但是谢谢你,我不知道关于IPython (2认同)
  • 问题解决的荣誉* - 补充实际的解决方案. (2认同)

小智 5

如果要从(未知)日期时间对象中获得年份:

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
Run Code Online (Sandbox Code Playgroud)