Yıl bir Python datetime nesnesinden nasıl çıkarılır?


108

Python kullanarak yılı mevcut tarihten çıkarmak istiyorum.

C # dilinde bu şöyle görünür:

 DateTime a = DateTime.Now() 
 a.Year

Python'da ne gereklidir?

Yanıtlar:


159

Aslında Python'da neredeyse aynı .. :-)

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

Tabii ki, tarihin ilişkili bir zamanı yoktur, bu yüzden bunu da önemsiyorsanız, aynısını tam bir datetime nesnesiyle de yapabilirsiniz:

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

(Açıkçası farklı değil, ancak elbette yılı almadan önce datetime.datetime.today () değişkenini bir değişken içinde saklayabilirsiniz).

Unutulmaması gereken önemli bir nokta, zaman bileşenlerinin bazı python sürümlerinde (sanırım 2.5.x ağacı) 32 bit ve 64 bit pitonlar arasında farklılık gösterebileceğidir. Dolayısıyla, bazı 64 bit platformlarda saat / dakika / saniye gibi şeyler bulacaksınız, 32 bitte saat / dakika / saniye alırsınız.


1
datetime.datetime.today (). year Python 3 için çalışmadı . AttributeError: 'datetime.datetime' türü nesnesinin 'datetime' özniteliği yok . Datetime.today ()
twumm

2
@twumm, bunun nedeni, datetime'ı "datetime içe aktarma tarih saatinden" olarak içe aktardığınız içindir. Basitçe "tarih saatini içe aktar" yaptıysanız, çözüm sorunsuz çalışacaktır. Sahip olduğunuzla tamamen aynı.
Apteronotus

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

hatta ( Lennart'ın önerdiği gibi )

a = datetime.datetime.now().year

ya da

a = datetime.date.today().year

1
Şimdi () bir tarih saatinde daha doğal hissettirse de. datetime.date.today (). yıl, belki. :)
Lennart Regebro

Bunu düşünmemiştim ve sanırım, bugün () günlerin kesinliğini ima ediyor gibi görünebilirken, zaman açısından daha "doğru" geliyor. (En azından 2.5.4'te) datetime.today () ve datetime.now () aynı şeyi yapıyor

Tam olarak aynı değiller, datetime.now () bir saat dilimi nesnesini kabul ederken, datetime.today () sadece timestamp'tan (time.time ()) çağırır ve bu nedenle today (), Python'un yerel saat diliminizi düşündüğü her zaman olacaktır. , oysa şimdi () size biraz daha ilginç şeyler söyleyebilirsiniz.
Nick Bastin

17

Bu soruya verilen diğer cevaplar tam anlamıyla isabetli görünüyor. Şimdi, yığın taşması olmadan bunu kendiniz için nasıl çözersiniz? Otomatik sekme tamamlama özelliğine sahip etkileşimli bir Python kabuğu olan IPython'a göz atın .

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

sekmeye birkaç kez basın ve "şimdi" nesnesinin üyelerini göstermeniz istenir:

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

ve now.year'ın "now" nesnesinin bir üyesi olduğunu göreceksiniz .


2
Ayrıca, bu: docs.python.org/library/datatypes.html Teşekkürler, IPython hakkında bunu bilmiyordum

2
Problem çözme için övgü - gerçek çözümü tamamlar.
Iceland_jack

İpython'u kurmak istemeyenler için, olası yöntemleri ve öznitelikleri görmek için herhangi bir işlevi veya sınıfı dir ile sarmalayabilirsiniz. Örneğin, dir (datetime.datetime.now), ipython'da tab tuşuna basmak gibi mevcut işlevleri verir.
Saurav Pathak

6

Yılı (bilinmeyen) bir tarih-saat-nesnesinden istiyorsanız:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.