ในการหาระยะห่างของวันเวลานั้น เป็นการคำนวณว่า วันเวลาเริ่มต้นกับเวลาสิ้นสุดนั้นห่างกันเท่าใด หากใครที่เคยใช้ Microsoft Excel (ไมโครซอฟท์ เอ็กเซล)Google Sheets (กูเกิล ชีท) หรือ SQL (เอสคิวแอล) อยู่บ่อยๆก็คงจะคุ้นเคยกับฟังก์ชัน datediff  แต่สำหรับในPython (ไพทอน) เราสามารถนำออบเจ็กต์ datetime , date และ time มาทำการลบกันได้โดยตรง แต่จะต้องเป็นข้อมูลชนิดเดียวกันเช่น date กับ date , time กับ time ซึ่งค่าที่ได้มาจะอยู่ในหน่วย วัน ชั่วโมง:นาที:วินาที แต่ถ้าหากเราต้องการหน่วยที่ต่างไปจากนี้ เช่น ต้องการหาหน่วยเป็นปี เราก็แค่นำ 365 ไปหารกับจำนวนวัน เป็นต้น ทั้งนี้เมื่อเรานำข้อมูลวัน เวลา มาลบกัน ตัวแปรที่จะเก็บผลลัพธ์จะกลายเป็นข้อมูลชนิด timedelta โดยอัตโนมัติ และหากต้องการจำนวนไปใช้ ก็ให้อิมพอร์ตโมดูลนั้นเข้ามา ซึ่งจะมีลักษณะการใช้เบื้องต้น คือ

ทำการอิมพอร์ตโมดูลเข้ามา

from datetime import date

จากนั้นให้เรากำหนดวันที่ ที่เราต้องการนำมาเปรียบเทียบกัน เช่น

d1 = date(2018, 8, 12)
d2 = date(2018, 12, 8)
delta = d2 -d1
print delta

ผลลัพธ์

ผลลัพธ์การหาระยะห่างของวัน
ผลลัพธ์การเปรียบเทียบ

     ผลลัพธ์ที่ออกมาจากข้างบนก็จะเป็นหน่วย วัน ชั่วโมง:นาที:วินาที ซึ่งถ้าหากต้องการจะเห็นหน่วยต่างๆที่เป็นจำนวนปี จำนวนเดือน หรือจำนวนวัน ก็แค่นำไปหารจำนวนวัน เช่น

days = delta.days  #อ่านจำนานวันออกมาจาก delta
num_months = days//30  #หาจำนวนเดือน
num_days = days % 30   #หาจำนวนวัน
print 'ห่างกัน',num_months , 'เดือน' , num_days , 'วัน'

ผลลัพธ์

ผลลัพธ์การเปลี่ยนหน่วยเป็นจำนวนเดือนและจำนวนวัน
ตัวอย่าง

     ผลลัพธ์ที่ออกมาก็จะหน่วยเราทำการคำนวณออกมา ซึ่งเราจำเป็นต้องทำการอ่านค่าวันออกมาจากผลลัพธ์การเปรียบเทียบ จึงจะสามารถนำมาแปลงเป็นหน่วยอื่นๆได้

     และนอกจากการหาผลต่างของวันเวลาแล้ว ยังมีอีกกรณีที่เราอาจจะต้องนำไปใช้ในงานอยู่บ่อยๆ นั่นก็คือการเพิ่มหรือลดส่วนของวันเวลา เพื่อตรวจสอบว่าผลลัพธ์ที่ได้จะตรงกับวันเวลาใด ซึ่งเราจะต้องกำหนดช่วงเวลาห่างของวันด้วยข้อมูล timedelta ดังนั้น เราจึงต้องทำการอิมพอร์ตโมดูลดังกล่าวเข้ามาใช้งาน โดยหน่วยที่สามารถกำหนดให้แก่ timedelta ได้จะมี days, weeks, hours, minutes, seconds, milliseconds, microseconds โดยเราสามารถเลือกเพียงแค่บางหน่วยได้ และถ้าหากต้องการเวลาในอดีตก็ให้ระบุค่าติดลบ เช่น

next_2_months = timedelta(days=60)
next_2_years = timedelta(days=2*365)
last_2_weeks = timedelta(weeks=-2) #หากต้องการหาวันในอดีตก็สามารถ ใช้ค่าติดลบได้

จากนั้นเราทำให้การใช้ฟังก์ชันที่ชื่อ __add()__ และทำการนำค่า timedelta จากขั้นตอนข้างบน มากำหนดให้แก่ฟังก์ชันนี้ ตัวอย่างเช่น

from datetime import date
from datetime import timedelta

d = date(2018, 12, 8)
next_2_years = timedelta(days=2*365)
next_d = d.__add__(next_2_years)
print next_d

ผลลัพธ์

ผลลัพธ์การเพิ่มปี
ผลลัพธ์การเพิ่มปี

     ซึ่งผลลัพธ์จากการใช้งานในตัวอย่างที่เป็นการเพิ่มจำนวนปีเข้าไปอีกสองปี ก็จะเป็นการแสดงผลลัพธ์ในอีก 365*2 วัน ข้างหน้า นอกจากนี้แล้ว เรายังสามารถนำไปประยุกต์ใช้กับสถานการณ์ต่างๆ ได้อย่างมากมาย เช่น ถ้าหากเรามีนัดตามวันที่เหล่านั้น เราก็สามารถนำวันที่เหล่านั้นมาตรวจสอบได้ เพียงเท่านี้เราก็สามารถหาระยะห่างของวัน และตรวจสอบวันที่ในอนาคต หรือวันที่ในอดีตได้แล้ว

 

 

ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ : Python

ตัวแปรที่ใช้ในฟังก์ชันแสดงวันและเวลาในภาษา Python (ไพทอน)

ตัวแปรที่ใช้ในฟังก์ชันการคำนวณตัวเลขเเละการแทนค่า ใน Python(ไพทอน)

การประกาศตัวแปรและคำสงวนของ Python (ไพทอน)

ทำความรู้จักกับ โมดูล datetime (เดทไทม์) ในภาษา Python (ไพทอน)

ตัวดำเนินการ (Operator) สำหรับเปรียบเทียบความสัมพันธ์ใน Python (ไพทอน)

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การใช้ฟังก์ชัน ScreenShot ใน Selenium เพื่อจัดการการถ่ายภาพหน้าจอของเว็บไซต์
โดย athirach.offcial ศ 29 มี.ค. 2024 3:00 pm บอร์ด Software testing
0
135
ศ 29 มี.ค. 2024 3:00 pm โดย athirach.offcial View Topic การใช้ฟังก์ชัน ScreenShot ใน Selenium เพื่อจัดการการถ่ายภาพหน้าจอของเว็บไซต์
การใช้งานฟังก์ชัน Window ใน Selenium เพื่อจัดการกับหน้าต่างของเบราว์เซอร์
โดย athirach.offcial ศ 29 มี.ค. 2024 2:36 pm บอร์ด Software testing
0
129
ศ 29 มี.ค. 2024 2:36 pm โดย athirach.offcial View Topic การใช้งานฟังก์ชัน Window ใน Selenium เพื่อจัดการกับหน้าต่างของเบราว์เซอร์
การใช้ Selenium เพื่อส่งคีย์ (send_keys) ไปยังฟิลด์ค้นหา
โดย athirach.offcial ศ 29 มี.ค. 2024 1:57 pm บอร์ด Software testing
0
164
ศ 29 มี.ค. 2024 1:57 pm โดย athirach.offcial View Topic การใช้ Selenium เพื่อส่งคีย์ (send_keys) ไปยังฟิลด์ค้นหา
selenium การใช้ driver.get เพื่อเข้าสู่เว็บไซต์โดยอัตโนมัติ
โดย athirach.offcial ศ 29 มี.ค. 2024 1:50 pm บอร์ด Software testing
0
168
ศ 29 มี.ค. 2024 1:50 pm โดย athirach.offcial View Topic selenium การใช้ driver.get เพื่อเข้าสู่เว็บไซต์โดยอัตโนมัติ
พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
โดย MBMoo ศ 29 มี.ค. 2024 1:34 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
177
ศ 29 มี.ค. 2024 1:48 pm โดย mindphp View Topic พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:33 pm บอร์ด Python Knowledge
0
292
พฤ 28 มี.ค. 2024 12:33 pm โดย athirach.offcial View Topic เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:16 pm บอร์ด Python Knowledge
0
100
พฤ 28 มี.ค. 2024 12:16 pm โดย athirach.offcial View Topic การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:03 pm บอร์ด Python Knowledge
1
308
ศ 29 มี.ค. 2024 9:24 am โดย athirach.offcial View Topic เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด