จะแยกปีออกจากวัตถุ Python datetime ได้อย่างไร


108

ฉันต้องการแยกปีจากวันที่ปัจจุบันโดยใช้ Python

ใน C # จะมีลักษณะดังนี้:

 DateTime a = DateTime.Now() 
 a.Year

สิ่งที่จำเป็นใน Python

คำตอบ:


159

ในความเป็นจริงมันเกือบจะเหมือนกันใน Python .. :-)

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

แน่นอนว่าวันที่ไม่มีเวลาที่เกี่ยวข้องดังนั้นหากคุณสนใจเรื่องนี้เช่นกันคุณสามารถทำเช่นเดียวกันกับวัตถุวันที่และเวลาที่สมบูรณ์:

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

(แน่นอนว่าไม่แตกต่างกัน แต่คุณสามารถจัดเก็บ datetime.datetime.today () ไว้ในตัวแปรก่อนที่คุณจะคว้าปีได้)

สิ่งสำคัญอย่างหนึ่งที่ควรทราบคือส่วนประกอบของเวลาอาจแตกต่างกันระหว่างงูเหลือม 32 บิตและ 64 บิตในหลามบางเวอร์ชัน (ฉันคิดว่าต้นไม้ 2.5.x) ดังนั้นคุณจะพบสิ่งต่างๆเช่นชั่วโมง / นาที / วินาทีบนแพลตฟอร์ม 64 บิตบางรุ่นในขณะที่คุณได้รับชั่วโมง / นาที / วินาทีใน 32 บิต


1
. datetime.datetime.today () ปีไม่ได้ทำงานให้งูใหญ่ 3 มันกลับมีข้อผิดพลาดAttributeError: ชนิดของวัตถุ 'datetime.datetime' ไม่มีแอตทริบิวต์ 'datetime' ฉันต้องใช้datetime.today () ปี
twumm

2
@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
แม้ว่าตอนนี้ () จะรู้สึกเป็นธรรมชาติมากขึ้นในวันที่และเวลา datetime.date.today () ปีอาจจะ :)
Lennart Regebro

ฉันไม่ได้คิดถึงเรื่องนั้นและฉันเดาว่ามันรู้สึก "แม่นยำ" มากขึ้นเมื่อเทียบกับเวลาโดยที่วันนี้ () อาจดูเหมือนจะมีความแม่นยำของวัน แปลกที่ (อย่างน้อยใน 2.5.4) datetime.today () และ datetime.now () ทำสิ่งเดียวกัน

พวกเขาไม่เหมือนกัน datetime.now () ยอมรับวัตถุเขตเวลาในขณะที่ datetime.today () เพียงแค่เรียกจาก timestamp (time.time ()) ดังนั้นวันนี้ () จะอยู่ในสิ่งที่ Python คิดว่าเขตเวลาท้องถิ่นของคุณ คือในขณะที่คุณจะได้รับตอนนี้ () เพื่อบอกสิ่งที่น่าสนใจเพิ่มเติมเล็กน้อย
Nick Bastin

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.

กดแท็บสองสามครั้งคุณจะได้รับแจ้งกับสมาชิกของวัตถุ "ตอนนี้":

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
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.