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