หากคุณพิมพ์วันที่โดยตรงโดยใช้ฟังก์ชันการพิมพ์ คุณจะได้รับวันที่ปกติ
ตัวอย่าง
import datetime today = datetime.date.today() print(today)
ผลลัพธ์
คุณจะได้ผลลัพธ์ -
2018-1-2
ซึ่งเป็นสิ่งที่คุณต้องการ แต่เมื่อคุณผนวกสิ่งนี้เข้ากับรายการแล้วลองพิมพ์ออกมา
ตัวอย่าง
import datetime my_list = [] today = datetime.date.today() my_list.append(today) print(my_list)
ผลลัพธ์
คุณจะได้ผลลัพธ์ -
[datetime.date(2018, 1, 2)]
สิ่งนี้เกิดขึ้นเพราะ datetime เป็นวัตถุ ดังนั้น เมื่อคุณจัดการพวกมัน คุณจะจัดการวัตถุ ไม่ใช่สตริง ไม่ใช่การประทับเวลาหรืออะไรก็ตาม วัตถุใด ๆ ใน Python มีการแทนค่าสตริงสองแบบ การแทนค่าปกติที่ใช้โดย "print" สามารถรับได้โดยใช้ฟังก์ชัน str() อันนี้ถูกใช้งานโดยใช้ฟังก์ชัน __str__ ในคลาสสำหรับอ็อบเจกต์นั้น การแสดงทางเลือกที่ใช้เพื่อแสดงลักษณะของวัตถุ (เป็นข้อมูล) สามารถใช้ฟังก์ชัน repr() ได้
ดังนั้น เพื่อให้ได้การแสดงที่ถูกต้อง คุณต้องเรียก str อย่างชัดเจนบนอ็อบเจกต์ datetime ของคุณ
ตัวอย่าง
import datetime my_list = [] today = datetime.date.today() my_list.append(str(today)) print(my_list)
ผลลัพธ์
คุณจะได้ผลลัพธ์ -
['2018-01-02']