วิธีแปลงสตริงเป็นวันที่และเวลาใน Python
เผยแพร่แล้ว: 2022-12-20การแปลงจากข้อมูลประเภทหนึ่งเป็นข้อมูลประเภทอื่นเป็นสิ่งสำคัญในภาษาการเขียนโปรแกรมใดๆ ภาษาการเขียนโปรแกรมเกือบทั้งหมดรองรับการแปลงประเภทสำหรับประเภทข้อมูลในตัว
ประเภทข้อมูลที่กำหนดเอง เช่น วันที่และเวลา จำเป็นต้องมีโมดูลเพิ่มเติมสำหรับการแปลง เราต้องการโมดูล โดยเฉพาะอย่าง datetime
สำหรับการแปลงวันที่และเวลา เนื่องจากการทำงานของโมดูลเหล่านี้ไม่เคยง่ายสำหรับโปรแกรมเมอร์ โชคดีที่ python มีโมดูลในตัวเพื่อทำงานกับวันที่และเวลา
เราจะเรียนรู้วิธีการแปลง datetime
string เป็น datetime
object ใน Python โดยใช้โมดูลต่างๆ ก่อนจะพูดถึงเรื่องนั้น มาดูกันว่าทำไมเราต้องแปลงมันตั้งแต่แรก
ทำไมเราต้องแปลง datetime string เป็น datetime object?
เมื่อเราต้องทำงานกับวันที่ มันไม่ง่ายเลยที่จะทำงานหากอยู่ในรูปแบบสตริง การแปลงเป็นรูปแบบวันที่และเวลาทำให้ใช้งานได้ง่ายมาก วันที่ในสตริงก็เหมือนสตริงปกติ จะไม่มีวิธีพิเศษในการทำงานกับวันที่ มันจะมีวิธีสตริงทั่วไปซึ่งเราไม่ต้องการในขณะที่ทำงานกับวันที่
สมมติว่าเราต้องเปรียบเทียบสองวัน หากอยู่ในรูปแบบสตริง เราก็สามารถเปรียบเทียบได้อย่างถูกต้อง หากอยู่ใน datetime
แบบวันที่และเวลา เราสามารถใช้ตัวดำเนินการเปรียบเทียบเช่นตัวเลขได้
นี่เป็นเพียงสถานการณ์เดียวที่การแปลงเป็น datetime
แบบวันที่และเวลาทำให้สิ่งต่างๆ ง่ายขึ้น มีสถานการณ์มากมาย เช่น การเพิ่มวันที่ การลบ การจัดการเขตเวลา ฯลฯ ซึ่งการแปลง datetime
วันที่และ datetime
เป็นวัตถุวันที่และเวลาทำให้ชีวิตของเราง่ายขึ้นกว่าที่เคย
จากที่กล่าวมา เรามาดูวิธีต่างๆ ในการแปลง datetime
string เป็น datetime
object เราจะใช้โมดูล datetime
ในตัวและโมดูล dateutil
ของบุคคลที่สามเพื่อแปลงสตริง datetime
เป็นวัตถุ datetime
เริ่มจากโมดูลวันที่และเวลา
โดยใช้วันที่และเวลา
วันที่และเวลาเป็น datetime
ในตัวของ Python ซึ่งใช้เพื่อทำงานกับวันที่และเวลา มีคลาสมากมายในโมดูลนี้ที่ช่วยให้เราทำงานกับวันที่และเวลาได้ เราจะใช้คลาส datetime.datetime
สำหรับการแปลง
datetime.datetime
มีหลายวิธี เราสนใจวิธี strptime
ซึ่งจะช่วยเราในการแปลง มาตรวจสอบกัน
datetime.strptime
เมธอด datetime.strptime
ใช้ในการแปลง datetime
string เป็น datetime
object ใช้สองสตริง หนึ่งคือสตริง datetime
และอีกอันคือรูปแบบของสตริง datetime
นั้น และส่งคืนวัตถุ datetime
มาดูตัวอย่างกัน
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
หากคุณเรียกใช้โค้ดด้านบน คุณจะเห็นผลลัพธ์ต่อไปนี้
2022-12-19 21:37:56
เราได้นำสตริงวันที่เวลาและแปลงเป็นวัตถุวันที่ datetime
โดยใช้ datetime.strptime
datetime
ตรวจสอบให้แน่ใจว่ารูปแบบที่คุณให้กับเมธอดนั้นตรงกับ datetime
วันที่และเวลาทุกประการ หากไม่ตรงกัน คุณอาจได้รับข้อผิดพลาดหรือผลลัพธ์ที่ไม่ถูกต้อง
เราได้ใช้รหัสการจัดรูปแบบสำหรับ datetime
แบบวันที่และเวลา คุณสามารถอ้างถึงรหัสรูปแบบทั้งหมดในเอกสาร
เมธอด datetime.strptime
คืนค่า datetime
ที่สมบูรณ์ หากคุณต้องการแยกวันที่และเวลา เราสามารถใช้เมธอด date time
ของ datetime
object ได้ มาดูรหัสกัน
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())
เรียกใช้โค้ดด้านบนและคุณจะเห็นผลลัพธ์ต่อไปนี้
Date: 2022-12-19 Time: 21:37:56
date
และ time
ของเมธอดจะส่งคืนวัตถุตามลำดับ พวกเขาจะมีวิธีการตามลำดับวันที่และเวลาอีกครั้ง
เราได้จัดเตรียมสตริงและรูปแบบที่ถูกต้องสำหรับเมธอด datetime.strptime
ที่เราได้เห็นด้านบน หากเราไม่ได้ระบุอย่างถูกต้อง เราก็จะได้รับข้อผิดพลาด มาดูวิธีจัดการกับข้อผิดพลาดเหล่านั้นกัน เรียกใช้รหัสต่อไปนี้

from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
โค้ดด้านบนจะเกิดข้อผิดพลาดเนื่องจากการจัดรูปแบบไม่ตรงกับ datetime
วันที่และเวลา ในการจัดการกับข้อผิดพลาดประเภทนี้ เราสามารถใช้คำสั่ง try-except ของ Python มาเพิ่มกันเถอะ
from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)
ตอนนี้เรียกใช้รหัสอีกครั้ง คุณจะเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้โดยไม่ทำลายรหัส
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
ในทำนองเดียวกัน เราสามารถเพิ่ม try-except สำหรับวิธีการ parser.parse
ที่กำลังจะมาถึงได้เช่นกัน ช่วยให้เราหลีกเลี่ยงการทำลายโค้ดระหว่างกลาง สิ่งนี้ไม่เกี่ยวข้องเป็นพิเศษกับบริบทบทช่วยสอนนี้ แต่จะเตือนให้คุณใช้ในโค้ดของคุณ
เพียงเท่านี้สำหรับ datetime
วันที่และเวลา ไปที่โมดูลถัดไป dateutil
ใช้ dateutil
dateutil
ของโมดูลจัดเตรียมส่วนขยายให้กับโมดูล datetime
ทำให้การทำงานกับวันที่และเวลาง่ายขึ้นมากด้วยวิธีการมากมายที่ใช้งานง่าย มาติดตั้งโมดูลด้วยคำสั่งต่อไปนี้
pip install python-dateutil
วิธีการที่เราสนใจคือ dateutil.parser.parse
มาดูวิธีการแปลง datetime
string เป็น datetime
object กัน
parser.parse
วิธีการ parser.parse
จะใช้สตริง datetime
และแปลงเป็นรูปแบบวัตถุ datetime
ตามลำดับ เราไม่จำเป็นต้องจัดรูปแบบใดๆ สำหรับวิธีนี้ มันจะแปลง datetime
วันที่และเวลาให้เป็น datetime
วันที่และเวลาโดยอัตโนมัติ มาดูตัวอย่างกัน
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
หากคุณเรียกใช้โค้ดด้านบน คุณจะเห็นผลลัพธ์ต่อไปนี้
2022-12-19 21:37:56
สตริงวันที่และเวลาต้องอยู่ในรูปแบบเฉพาะที่ parser.parse
datetime
จะเกิดข้อผิดพลาดหากรูปแบบ datetime
วันที่และเวลาไม่เป็นไปตามรูปแบบที่ต้องการ คุณสามารถตรวจสอบรูปแบบสตริงวันที่และเวลาทั้งหมดที่ยอมรับสำหรับการแปลงอัตโนมัติ
เนื่องจากเมธอด parser.parse
ส่งคืนอ็อบเจกต์ datetime
เราสามารถเข้าถึงอ็อบเจกต์ date
และ time
แยกจากกันดังที่เราได้เห็นในโมดูล datetime
มาดูรหัสกัน
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
คุณสามารถดูผลลัพธ์ด้านล่างหากคุณรันโค้ดด้านบน
Date: 2022-12-19 Time: 21:37:56
อย่างที่คุณเห็น dateutil
ช่วยให้ทำงานกับวันที่และเวลาได้ง่ายขึ้น คุณสามารถสำรวจโมดูลได้ในเอกสาร
บทสรุป
เราใช้โมดูลในตัวหนึ่งโมดูลและโมดูลของบุคคลที่สามหนึ่งโมดูลเพื่อแปลง datetime
วันที่และเวลาเป็นวัตถุ DateTime มีโมดูลในตัวอื่นที่เรียกว่า time
ซึ่งเราสามารถแปลงสตริง datetime
เป็นวัตถุ DateTime คล้ายกับโมดูล datetime
และ dateutil
ลองด้วยตัวคุณเอง ไม่ใช่เรื่องยากเพราะคุณได้ทำสิ่งที่คล้ายกันกับโมดูลอื่นแล้ว
อาจมีห้องสมุดมากกว่านี้ที่เราสามารถทำได้ในสิ่งเดียวกัน โมดูลที่เราใช้ในบทช่วยสอนเป็นมาตรฐานและใช้กันอย่างแพร่หลาย คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับโมดูลอื่นๆ และเลือกโมดูลที่ดีที่สุดที่เหมาะกับคุณ
คุณยังสามารถสำรวจวิธีการคำนวณความแตกต่างของเวลาในไพธอน
มีความสุขในการเข้ารหัส