วิธีเพิ่มชั่วโมงเป็นเวลาปัจจุบันในไพ ธ อน


158

ฉันสามารถรับเวลาปัจจุบันดังต่อไปนี้:

from datetime import datetime
str(datetime.now())[11:19]

ผลลัพธ์

'19:43:20'

ตอนนี้ฉันกำลังพยายามเพิ่ม9 hoursเวลาด้านบนฉันจะเพิ่มชั่วโมงในเวลาปัจจุบันใน Python ได้อย่างไร


12
หากต้องการได้รับการจัดรูปแบบเวลาปัจจุบันให้ดูที่datetime.now().strftime('%H:%M:%S')
eumiro

คำตอบ:


367
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)
#datetime.datetime(2012, 12, 3, 23, 24, 31, 774118)

จากนั้นใช้การจัดรูปแบบสตริงเพื่อรับชิ้นส่วนที่เกี่ยวข้อง:

>>> '{:%H:%M:%S}'.format(nine_hours_from_now)
'23:24:31'

หากคุณเพียงจัดรูปแบบวันที่และเวลาคุณสามารถใช้:

>>> format(nine_hours_from_now, '%H:%M:%S')
'23:24:31'

หรือตามที่ @ eumiro ได้ชี้ให้เห็นในความคิดเห็น - strftime


ทำไมนี่ไม่ใช่คำตอบที่ดีที่สุด? มีผลข้างเคียงหรือไม่? ข้อผิดพลาดที่ไม่ได้รายงาน
Braza

6
@Braza OP ไม่ได้เลือกที่จะยอมรับ ไม่มีผลข้างเคียงหรือข้อบกพร่อง
Jon Clements

@JonClements ขอขอบคุณสำหรับการตอบกลับ :) ฉันทดสอบแล้วและยืนยัน
Braza

3
นี่ไม่ใช่ DST ที่ปลอดภัย
Antti Haapala

1
คำถามถามว่าจะเพิ่มชั่วโมงได้อย่างไร แต่การลบชั่วโมงสามารถทำได้สองวิธี: 1) ใช้ตัวดำเนินการลบ ( -) แทนตัวดำเนินการบวก ( +); ตามเอกสาร " timedeltaวัตถุสนับสนุนการเพิ่มและการลบบางอย่างกับวันที่และdatetimeวัตถุ" 2) ส่งค่าลบให้กับtimedeltaพารามิเตอร์ใด ๆ ตามเอกสาร "อาร์กิวเมนต์อาจมีความยาวหรือลอยและอาจเป็นค่าบวกหรือค่าลบ"
ถั่วแดง

20

นำเข้าdatetimeและtimedelta :

>>> from datetime import datetime, timedelta
>>> str(datetime.now() + timedelta(hours=9))[11:19]
'01:41:44'

แต่วิธีที่ดีกว่าคือ:

>>> (datetime.now() + timedelta(hours=9)).strftime('%H:%M:%S')
'01:42:05'

คุณสามารถอ้างถึงstrptimeและstrftimeพฤติกรรมเพื่อทำความเข้าใจวิธีที่ไพ ธ อนประมวลผลข้อมูลวันที่และเวลา


เชื่อมโยงไปยังเอกสารหลามให้ข้อมูลเชิงลึกในการแยกและการจัดรูปแบบวันที่ / เวลา
hc_dev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.