วิธีการคำนวณความแตกต่างของเวลาใน Python
เผยแพร่แล้ว: 2022-01-23เมื่อทำงานกับวันที่และเวลาใน Python คุณมักจะต้องคำนวณความแตกต่างของเวลา ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีคำนวณความแตกต่างระหว่างการประทับเวลาสองครั้งในหน่วยชั่วโมง นาที และวินาที
ในตอนท้ายของบทช่วยสอนนี้ คุณจะได้เรียนรู้:
- วิธีใช้โมดูล
datetime
ของ Python เพื่อทำงานกับวันที่และเวลา - ออบเจ็กต์
timedelta
คืออะไรและมีประโยชน์อย่างไรและ - คำนวณความแตกต่างของเวลาระหว่างการประทับเวลาสองครั้ง—เป็นชั่วโมง นาที และวินาที
มาเริ่มกันเลย.
วิธีใช้โมดูลวันที่และเวลาของ Python
ในการทำงานกับวันที่และเวลาใน Python คุณจะต้องใช้โมดูล datetime
โมดูล datetime
เป็นส่วนหนึ่งของไลบรารีมาตรฐาน Python ดังนั้นคุณจึงสามารถนำเข้าไปยังสภาพแวดล้อมการทำงานได้ทันที ดังนี้:
import datetime
ในการคำนวณความแตกต่างของเวลา คุณต้องสร้างการประทับเวลาที่แตกต่างกันสองแบบ คุณสามารถเลือกสร้าง:
- วัตถุสอง
date
ที่ - วัตถุสอง
time
หรือ - การรวมกันของทั้ง
date
และtime
— วัตถุdatetime
วิธีสร้างวัตถุวันที่ใน Python
มานำเข้าคลาส date
จากโมดูล datetime ในการสร้างวัตถุวันที่ใน Python คุณสามารถใช้ไวยากรณ์ทั่วไป datetime.date(<year>,<month>,<day>)
ได้ นี่คือตัวอย่างการสร้างวัตถุ date
date1
:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
คุณสามารถลองใช้โค้ดบนคอมไพเลอร์ Geekflare Python เพื่อทดสอบได้ หรือติดตั้ง Python บนคอมพิวเตอร์ของคุณ
ดังที่แสดงด้านบน เมื่อคุณพิมพ์วันที่ วันที่จะถูกจัดรูปแบบใน YYYY-MM-DD
หมายเหตุ : อย่าลืมระบุเดือนเป็นจำนวนเต็ม โดยไม่มี ศูนย์นำหน้า เป็นไปได้มากที่คุณจะคุ้นเคยกับการเพิ่มศูนย์นำหน้าไปยังเดือนเมื่อจดวันที่
ตัวอย่างเช่น หากต้องการระบุวันที่ในเดือนมิถุนายน เดือนที่ 6 ของปี ให้ใช้ 6 ไม่ใช่ 06
ตัวอย่างเช่น ลองเรียกใช้ข้อมูลโค้ดต่อไปนี้—ซึ่งเดือนถูกกล่าวถึงเป็น 03
แทนที่จะเป็นเพียง 3
คุณจะเห็นว่ามีข้อผิดพลาดทางไวยากรณ์ดังที่แสดง:
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
ตอนนี้เรามาดูวิธีสร้างวัตถุ time
ใน Python กัน
วิธีสร้างวัตถุเวลาใน Python
ในการสร้างวัตถุเวลา ให้นำเข้าคลาส time
วัตถุเวลา Python ใดๆ สามารถสร้างได้โดยใช้คลาส time
โดยระบุแอตทริบิวต์ของคลาสต่อไปนี้: hour
, minute
, second
และ microsecond
อย่างไรก็ตาม คุณลักษณะเหล่านี้ทั้งหมดเป็น ทางเลือก หากคุณไม่ได้ระบุแอตทริบิวต์บางอย่าง พูด second
มันถูกตั้งค่าเป็น 0
โดยค่าเริ่มต้น
ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่คุณสามารถสร้างอ็อบเจ็กต์ time1
เช่นเดียวกับวัตถุ date
คุณสามารถพิมพ์วัตถุ time
เพื่อดูเวลาที่จัดรูปแบบได้
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
วิธีสร้างวัตถุ datetime ใน Python
อย่างที่คุณเห็น วัตถุ date
ไม่มีข้อมูลเกี่ยวกับเวลา และวัตถุ time
ไม่มีข้อมูลเกี่ยวกับวันที่
อย่างไรก็ตาม ในทางปฏิบัติ คุณจะต้องมีทั้งข้อมูลวันที่และเวลา ดังนั้นจึงแนะนำให้ใช้คลาส datetime
แทน
คุณสามารถเข้าถึงคลาส datetime
และสร้างวัตถุ datetime
ใน Python ดังที่แสดงด้านล่าง:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
ตอนนี้ มาสร้างวัตถุ datetime อื่น dt2
โดยไม่มีแอตทริบิวต์ second
กัน คุณจะเห็นว่ามันตั้งค่าเป็น 0
ซึ่งเป็นค่าเริ่มต้น
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
จนถึงตอนนี้ คุณได้เรียนรู้วิธีสร้างการประทับเวลาใน Python แล้ว เช่น วันที่ เวลา และวันที่และเวลา ถึงเวลาดูว่าคุณจะคำนวณความแตกต่างระหว่างการประทับเวลาสองครั้งใดๆ ได้อย่างไร
ตรงไปที่ส่วนถัดไปเพื่อค้นหา
วิธีใช้วัตถุ timedelta ใน Python
ใน Python timedelta
หมายถึงช่วงเวลาหนึ่ง เป็นความแตกต่างระหว่างออบเจ็กต์ date
, time
หรือ datetime
สองรายการ
หากคุณเพิ่มหรือลบออบเจ็กต์ date
, time
หรือ datetime
สองรายการ คุณจะได้ออบเจ็กต์ timedelta
ออบเจ็กต์ timedelta
นี้มีแอตทริบิวต์และวิธีการที่เป็นประโยชน์ซึ่งสามารถช่วยคำนวณความแตกต่างของเวลาได้
ไปข้างหน้าและคำนวณความแตกต่างระหว่างสองวัตถุ datetime
dt1
และ dt2
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
จากข้อมูลโค้ดด้านบน คุณจะเห็นว่าตัวแปร tdelta
เก็บความแตกต่างของเวลาระหว่าง dt1
และ dt2
และประเภทของ tdelta
รับการยืนยันว่าเป็น timedelta
ของคลาสโดยใช้ฟังก์ชัน type()
ในตัวของ Python

ทีนี้มาโค้ดตัวอย่างอื่นกัน
วิธีค้นหาความแตกต่างของเวลาระหว่างสองวัน
มาดูตัวอย่างง่ายๆ แต่น่าสนใจ
ปัญหา : ในการคำนวณความ แตกต่างของเวลา ระหว่างวันที่ปัจจุบัน (วันนี้) และวันเกิดของคุณ
เมื่อต้องการทำเช่นนี้ ให้ตั้งค่า วันนี้ เป็นการประทับเวลาแรก และ วันเกิด ของคุณเป็นการประทับเวลาที่สอง
ขั้นแรก ให้สร้างวัตถุ datetime
สองรายการ:
- หนึ่งสำหรับวันนี้ เรียกมันว่า
today
และ - อีกอันสำหรับวันเกิดของคุณ เรียกว่า
bday
คลาส datetime
มีเมธอด now()
ที่ให้วันที่และเวลาท้องถิ่นปัจจุบันแก่คุณ ลองใช้มันรับ today
—วันที่อ้างอิงของเรา
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
ในโค้ดด้านล่าง ให้แทนที่ bday
ด้วยวันเกิดของคุณเพื่อคำนวณเวลาที่เหลือสำหรับวันเกิดของคุณในปีนี้
หากคุณกำลังอ่านข้อความนี้หลังจากวันเกิดของคุณผ่านไป อย่าลังเลที่จะตั้งค่า bday
เป็นวันเกิดถัดไปของคุณ
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
ขั้นตอนต่อไปคือการคำนวณ time_diff
ซึ่งเป็นวัตถุ timedleta
ตามที่อธิบายไว้ก่อนหน้านี้ เพียงลบ today
ออกจาก bday
ของคุณ แล้วคุณจะมีเวลาต่างกัน
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416
หากต้องการทราบจำนวนวันที่เหลือ ให้ใช้แอตทริบิวต์ days บน time_diff
ดังที่แสดง:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.
วิธีค้นหาความแตกต่างของเวลาเป็นวินาที
มาคำนวณกันว่าวันเกิดของคุณอยู่ห่างออกไปกี่วินาที
ในการคำนวณความแตกต่างของเวลาทั้งหมดเป็นวินาที ให้ใช้ total_seconds()
บนอ็อบเจ็กต์ timedelta
time_diff
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.
ดีที่รอนานเกินไป!
ที่กล่าวว่าตอนนี้คุณรู้วิธีคำนวณความแตกต่างของเวลาระหว่างการประทับเวลาสองครั้งในหน่วยวินาที
มาทบทวนพื้นฐานบางอย่างและเขียนสิ่งต่อไปนี้ หนึ่งวันประกอบด้วย 24 ชั่วโมง ชั่วโมงหนึ่งประกอบด้วย 60 นาที และ 60 วินาทีประกอบกันเป็นนาที
สรุปได้ตามรูปข้างล่างนี้

ดังนั้น ในการแปลงจากวินาทีเป็นนาที ชั่วโมง และวัน คุณสามารถใช้ตารางต่อไปนี้ และหารด้วยปัจจัยการแปลงที่สอดคล้องกัน

ในหัวข้อถัดไป เรามาแปลงความแตกต่างของเวลาเป็นวินาทีเป็นนาทีและชั่วโมงกัน
วิธีหาความแตกต่างของเวลาเป็นนาที
หากต้องการทราบความแตกต่างของเวลาเป็นนาที คุณจะต้องหารจำนวนวินาทีทั้งหมดด้วย 60
มาหาร tsecs
ด้วย 60 และเก็บไว้ในตัวแปรที่เรียกว่า tmins
เช่นนี้
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.
วิธีหาความแตกต่างของเวลาเป็นชั่วโมง
เมื่อคุณคำนวณความแตกต่างของเวลาเป็นนาทีแล้ว คุณสามารถหารค่านั้นด้วย 60 เพื่อให้ได้ผลต่างเป็นชั่วโมง หรือคุณอาจหารวินาทีทั้งหมดด้วย 60*60 = 3600
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.
ตอนนี้คุณได้เรียนรู้วิธีคำนวณส่วนต่างของเวลาในหน่วยที่คุณเลือกแล้ว
บทสรุป
ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธี:
- สร้างและทำงานกับวันที่และเวลาโดยใช้โมดูล
datetime
ของ Python - ใช้วัตถุ
timedelta
เพื่อรับช่วงเวลาหรือความแตกต่างของเวลาและ - คำนวณความแตกต่างของเวลาเป็นวินาที นาที และชั่วโมง
หวังว่าคุณพบว่าบทช่วยสอนนี้มีประโยชน์ เมื่อคุณรู้ทุกอย่างเกี่ยวกับการคำนวณความแตกต่างของเวลาใน Python แล้ว ก็ถึงเวลาฝึกฝนทักษะของคุณ
มีความสุขในการเรียนรู้และเขียนโค้ด!
เรียนรู้วิธีเขียนโค้ดเท่ากับหรือไม่เท่ากับหรือสร้างเกมงูใน python ที่นี่