เปลี่ยน string เป็น datetime ด้วย Python

บทความนี้จะพูดถึงการแปลงค่าวัน เวลา ในรูปแบบ string ไปเป็น datetime ในภาษา Python กัน สำหรับคนที่พึ่งเริ่ม ในภาษา Python มีไลบรารี่ (library) ที่ติดมากับภาษาเลย (standard library หรือ built-in) ชื่อ datetime ที่ใช้จัดการกับวัน เวลาโดยเฉพาะ

ฟังก์ชันที่ใช้แปลงค่าวันที่ที่เป็น string ให้เป็น datetime ก็คือ strptime ซึ่งเป็น classmethod คือไม่ต้องสร้าง instance ของคลาสขึ้นมา เรียกใช้ผ่านชื่อคลาสได้เลย

datetime.strptime(date_string, format)

date_string คือ string ที่มีวันที่ที่เราต้องการแปลงค่า
format คือ รูปแบบของวันที่ที่อยู่ภายใน date_string

ตัวอย่างการใช้งาน strptime

from datetime import datetime

date_string = "20 Dec 2019 at 20:29:39"
format = "%d %b %Y at %H:%M:%S"

parsed_datetime = datetime.strptime(date_string, format)
# parsed_datetime = datetime.datetime(2019, 12, 20, 20, 29, 39)

ส่วนรูปแบบต่างๆ ของวันเวลา หรือ format code สามารถดูได้ strftime and strptime format code เพราะค่อนข้างมีให้ใช้เยอะเหมือนกันครับ จำได้ไม่หมด ฮ่าๆๆ

ฟังก์ชัน strptime จะมีข้อจำกัดก็คือเราต้องระบุรูปแบบของวันเวลาให้ตรงกับ string ที่เราต้องการจะแปลงค่า ไม่งั้นฟังก์ชันจะไม่สามารถแปลงค่าได้ ก็เลยมีนักพัฒนาสร้างไลบรารี่ dateutil ขึ้นมาเพื่อช่วยอำนวยความสะดวกในจุดนี้

ก่อนจะใช้งานก็ต้อง install ก่อนนะครับ

pip install python-dateutil

ตัวอย่างการใช้งาน dateutil parser

from dateutil.parser import parse

date_string = "20 Dec 2019 at 20:29:39"

parsed_datetime = parse(date_string)
# parsed_datetime = datetime.datetime(2019, 12, 20, 20, 29, 39)

พอใช้งาน dateutil จะทำให้เราไม่ต้องกังวลว่าจะต้องเปลี่ยน format เหมือนกับใช้ฟังก์ชัน strptime ชีวิตง่ายขึ้นไปอีก ^^

อ่อ dateutil มีฟังก์ชันอื่นๆ อีกเยอะนะครับ ลองไปศึกษาเพิ่มเติมแล้ว นำไปใช้ได้ครับ บทความนี้ขอยกมาแค่เรื่องการแปลงค่า string ให้เป็น datetime ครับ