ฉันจะแปลงวันที่และเวลาเป็นวันที่ (ใน Python) ได้อย่างไร


646

ฉันจะแปลงdatetime.datetimeวัตถุได้อย่างไร (เช่นค่าส่งคืนของdatetime.datetime.now())ไปยังdatetime.dateวัตถุใน Python?


16
หากคุณเพียงแค่ต้องนี้ได้โปรดทราบว่ามีวิธีการdatetime.datetime.now() datetime.date.today()
Thierry J.

หากคุณได้นำเข้าข้อมูลวันที่แล้วเช่นfrom datetime import datetimeคุณสามารถเพิ่มวันที่ได้from datetime import datetime, date
Josh

คำตอบ:


984

ใช้date()วิธีการ:

datetime.datetime.now().date()

14
ในการรับ UTC ซึ่งเป็นประโยชน์อย่างมาก -> datetime.datetime.utcnow()และสอดคล้องกันdatetime.datetime.utcnow().date()
Nick Brady

2
ขอบคุณ @SeanColombo วันที่ปัจจุบันในเขตเวลาที่กำหนดควรเป็นdatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica สำหรับซีอีโอ


62

คุณใช้datetime.datetime.date()วิธีการ:

datetime.datetime.now().date()

เห็นได้ชัดว่าการแสดงออกข้างต้นสามารถ (และควร IMHO :) เขียนเป็น:

datetime.date.today()

14
อย่าสับสนกับผู้ชาย
fiatjaf

1
เพื่อความเป็นธรรมคำตอบนี้ (การใช้.today()) เป็นคำตอบที่ไพเราะที่สุดสำหรับคำถามตัวอย่างที่ระบุ
Dannid

2
หากคุณใช้วันนี้ระวังเมื่อเปรียบเทียบวันที่ today()มีองค์ประกอบชั่วโมงเช่นกัน ดังนั้นถ้าคุณทำ: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')แล้วif losdat < datetime.datetime.today():มันจะเป็นจริงเสมอเพราะlosdatจะมีองค์ประกอบเวลาของเที่ยงคืนซึ่งจะตกก่อนเวลาของtoday()
Dennis Decoene

3
@DennisDecoene: ทำไมใช้datetime.datetime.today()แทนdatetime.date.today()เมื่อต้องการdatetime.dateวัตถุ?
อังคารที่

@tzot ใช่นั่นคือสิ่งที่ฉันต้องการชี้ให้เห็น แต่ก็ไม่มีความชัดเจนเกี่ยวกับ
Dennis Decoene

45

คุณสามารถแปลงวัตถุวันที่และเวลาเป็นวันที่ด้วยวิธีการ date () ของวัตถุเวลาวันที่ดังต่อไปนี้:

<datetime_object>.date()

3
import time
import datetime

# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
  start = end - datetime.timedelta(days=numdays+1)
  end   = int(time.mktime(end.timetuple()))
  start = int(time.mktime(start.timetuple()))
  # 86400 s = 1 day
  return xrange(start, end, 86400)

# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
    print datetime.datetime.fromtimestamp(dt).date()

2
คุณต้องการโพสต์คำตอบนี้ที่นี่หรือไม่? ดูเหมือนว่าฉันจะตอบคำถามของคุณไปยังคำถามอื่น
คนงานทุกคนมีความจำเป็น

2

คุณสามารถป้อนรหัสฟอร์มนี้สำหรับ(วันนี้วันที่ & ชื่อของวัน & ชั่วโมง) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19 -09-09 จ. 17:37:56 '

และป้อนรหัสนี้สำหรับ ( วันนี้วันที่เพียง) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

สำหรับวัตถุ: datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()


OP ต้องการรับdatetime.dateวัตถุไม่ใช่สายอักขระซึ่งstrftimeจะส่งคืน (อ้างอิง: docs.python.org/3/library/datetime.html#datetime.date.strftime )
Grzegorz Skibinski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.