วิธีการคำนวณความแตกต่างของเวลาใน 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 ที่นี่
