แทนที่จะแสดงออกนี้เพื่อสร้างการประทับเวลา POSIX จากdt
,
(dt - datetime(1970,1,1)).total_seconds()
ใช้สิ่งนี้:
int(dt.strftime("%s"))
ฉันได้รับคำตอบที่ถูกต้องในตัวอย่างของคุณโดยใช้วิธีที่สอง
แก้ไข: บางคนติดตาม ... หลังจากที่ความคิดเห็นบางส่วน (ดูด้านล่าง) ผมก็อยากรู้เกี่ยวกับการขาดการสนับสนุนหรือเอกสารสำหรับใน%s
strftime
นี่คือสิ่งที่ฉันพบ:
ในPython sourceสำหรับdatetime
และtime
สตริงSTRFTIME_FORMAT_CODES
บอกเรา:
"Other codes may be available on your platform.
See documentation for the C library strftime function."
ดังนั้นถ้าเราman strftime
(ในระบบ BSD เช่น Mac OS X) คุณจะพบการสนับสนุนสำหรับ%s
:
"%s is replaced by the number of seconds since the Epoch, UTC (see mktime(3))."
อย่างไรก็ตามนั่นเป็นสาเหตุที่%s
ทำงานบนระบบที่ใช้ แต่มีวิธีแก้ไขปัญหาของ OP ที่ดีกว่า (ซึ่งคำนึงถึงเขตเวลาด้วย) ดูคำตอบที่ยอมรับของ @ abarnert ที่นี่