สมมติว่าเรามีสองครั้งในรูปแบบนี้ "วัน dd Mon yyyy hh:mm:ss +/-xxxx" โดยที่ Day คือวันที่เป็นตัวอักษรสามตัวที่มีตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่ จันทร์ คือชื่อเดือนด้วยตัวอักษรสามตัว และสุดท้าย + หรือ - xxxx แทนเขตเวลา เช่น +0530 แสดงว่ามากกว่า GMT 5 ชั่วโมง 30 นาที (รูปแบบอื่นๆ เช่น dd, hh, mm, ss เป็นตัวอธิบาย) เราต้องหาความแตกต่างที่แน่นอนระหว่างการประทับเวลาสองครั้งในหน่วยวินาที
เพื่อแก้ปัญหานี้โดยใช้ python เราจะใช้ไลบรารี datetime มีฟังก์ชันที่เรียกว่า strptime() ซึ่งจะแปลงวันที่ที่จัดรูปแบบสตริงเป็นอ็อบเจกต์ datetime มีตัวระบุรูปแบบอยู่สองสามตัวดังด้านล่าง -
- %a ระบุวันในรูปแบบตัวอักษรสามตัว
- %d ระบุวันในรูปแบบตัวเลข
- %b หมายถึงเดือนในรูปแบบตัวอักษรสามตัว
- %Y หมายถึงปีในรูปแบบ ปปปป
- %H ระบุชั่วโมงในรูปแบบ hh
- %M หมายถึงนาทีในรูปแบบมิลลิเมตร
- %S ระบุวินาทีในรูปแบบ ss
- %z ระบุเขตเวลาในรูปแบบ +/- xxxx
ดังนั้น หากอินพุตเป็นแบบ t1 ="Thu 15 Jul 2021 15:10:17 +0530" t2 ="Thu 15 Jul 2021 20:25:29 +0720" ผลลัพธ์จะเป็น 12312
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- t1 :=เปลี่ยนรูปแบบครั้งแรกจากสตริงที่กำหนดเป็นรูปแบบที่กล่าวถึงข้างต้น
- t2 :=เปลี่ยนรูปแบบครั้งที่สองจากสตริงที่กำหนดเป็นรูปแบบที่กล่าวถึงข้างต้น
- ส่งคืนความแตกต่างระหว่าง t1 และ t2 ในไม่กี่วินาที
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from datetime import datetime def solve(t1, t2): t1 = datetime.strptime(t1, "%a %d %b %Y %H:%M:%S %z") t2 = datetime.strptime(t2, "%a %d %b %Y %H:%M:%S %z") return abs(int((t1-t2).total_seconds())) t1 = "Thu 15 Jul 2021 15:10:17 +0530" t2 = "Thu 15 Jul 2021 20:25:29 +0720" print(solve(t1, t2))
อินพุต
"Thu 15 Jul 2021 15:10:17 +0530", "Thu 15 Jul 2021 20:25:29 +0720"
ผลลัพธ์
12312