บทความนี้จะพูดถึงการแปลงค่าวัน เวลา ในรูปแบบ 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 ครับ