ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

     ในการหาระยะห่างของวันเวลานั้น เป็นการคำนวณว่า วันเวลาเริ่มต้นกับเวลาสิ้นสุดนั้นห่างกันเท่าใด หากใครที่เคยใช้ 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 (ไพทอน)

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ขอวิธีเช็คเว็บไซด์ที่มาจาก Google 10 หน้าแรกหน่อยค่ะ
โดย Kannaphat ส 27 ก.พ. 2021 4:59 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
12
ส 27 ก.พ. 2021 4:59 pm โดย Kannaphat
Review เว็บไซต์ หางานที่ต่างๆ
โดย fighthrmd125 ส 27 ก.พ. 2021 3:13 pm บอร์ด Share Knowledge
0
11
ส 27 ก.พ. 2021 3:13 pm โดย fighthrmd125
PDPA กับงาน HR ของบริษัท
โดย fighthrmd125 ส 27 ก.พ. 2021 1:48 pm บอร์ด Share Knowledge
0
8
ส 27 ก.พ. 2021 1:48 pm โดย fighthrmd125
ประโยชน์ของ การใช้ Skype และ Web board ในการทำงาน
โดย fighthrmd125 ส 27 ก.พ. 2021 12:23 pm บอร์ด Share Knowledge
0
12
ส 27 ก.พ. 2021 12:23 pm โดย fighthrmd125
การจ้างงานผู้พิการ
โดย fighthrmd125 พฤ 25 ก.พ. 2021 5:53 pm บอร์ด Share Knowledge
0
14
พฤ 25 ก.พ. 2021 5:53 pm โดย fighthrmd125
แนวทางการสรรหา ช่องทาง สรรหาผู้พิการเข้าทำงาน
โดย fighthrmd125 พฤ 25 ก.พ. 2021 5:12 pm บอร์ด Share Knowledge
0
9
พฤ 25 ก.พ. 2021 5:12 pm โดย fighthrmd125
Google Structured ส่วนการ vote ในบทความจะดึงข้อมูลมาจากไหนค่ะ
โดย eange08 พฤ 25 ก.พ. 2021 5:04 pm บอร์ด Joomla Development
1
11
พฤ 25 ก.พ. 2021 5:34 pm โดย eange08
B - ระบบ LINE API ไม่ตอบพบข้อมูล [2021-02][001]
โดย tsukasaz พฤ 25 ก.พ. 2021 3:35 pm บอร์ด MlineCRM Line + MD-CRM
1
6
พฤ 25 ก.พ. 2021 3:35 pm โดย tsukasaz