โมดูลวันเวลา (DateTime Module) ในภาษา Python
Datetime Module เป็นโมดูลของภาษา Python ที่มีไว้สำหรับจัดการเกี่ยวกับวันที่และเวลา โดยให้มีฟังก์ชั่นและคลาสต่างๆ ที่ช่วยให้ง่ายต่อการดึงค่าเกี่ยวกับเวลาและวันที่ออกมา เช่น การแปลงวันที่และเวลาไปมา การจัดการกับช่วงเวลา การทำงานกับเวลาที่เป็น timezone ต่างๆ และอื่นๆ อีกมากมาย
Datetime Module ประกอบด้วยคลาส datetime, date, time, timedelta และฟังก์ชั่นต่างๆ เช่น datetime.now(), datetime.strftime(), datetime.strptime() ซึ่งสามารถนำไปใช้งานในการจัดการเกี่ยวกับเวลาและวันที่ต่างๆ ได้หลากหลาย โดยฟังก์ชั่นและคลาสทั้งหมดใน Datetime Module มีการเข้าถึงง่ายและใช้งานได้ง่ายๆ โดยไม่ต้องเขียนโค้ดเยอะมาก
โดยทั่วไปแล้ว Datetime Module เป็นโมดูลที่ใช้งานได้แพร่หลายในการเขียนโปรแกรมที่เกี่ยวกับเวลาและวันที่ โดยไม่ว่าจะเป็นการพัฒนาแอปพลิเคชันเว็บ, ระบบเช็คอิน-เช็คเอ้าท์, ระบบจองโรงแรมหรือบัตรโดยสาร, ระบบการเงิน และอื่นๆ อีกมากมาย
โดย datetime มีฟังก์ชั่นหลักๆ ที่นิยมใช้ดังนี้
-
datetime.date(year, month, day) ฟังก์ชันสำหรับสร้างวันที่ โดยรับค่าปี (year), เดือน (month), และวัน (day) แล้วสร้างวัตถุ date ขึ้นมา
-
datetime.time(hour, minute, second, microsecond) ฟังก์ชันสำหรับสร้างเวลา โดยรับค่าชั่วโมง (hour), นาที (minute), วินาที (second) และไมโครวินาที (microsecond) แล้วสร้างวัตถุ time ขึ้นมา
-
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0) ฟังก์ชันสำหรับสร้างวันที่และเวลา โดยรับค่าปี (year), เดือน (month), วัน (day), ชั่วโมง (hour), นาที (minute), วินาที (second) และไมโครวินาที (microsecond) แล้วสร้างวัตถุ datetime ขึ้นมา
-
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) ฟังก์ชั่นสำหรับสร้างระยะเวลา โดยรับค่าจำนวนวัน (days), วินาที (seconds), ไมโครวินาที (microseconds), มิลลิวินาที (milliseconds), นาที (minutes), ชั่วโมง (hours) และสัปดาห์ (weeks) แล้วสร้างวัตถุ timedelta ขึ้นมา
ตาราง แสดงรูปแบบโค้ดคำสั่ง (Directive Format Codes)
คำสั่ง | คำอธิบาย | ตัวอย่าง |
---|---|---|
%a | ชื่อวัน (short) | Sun, Mon, …, Sat |
%A | ชื่อวัน (full) | Sunday, Monday, …, Saturday |
%w | รหัสวัน (0=Sunday, 1=Monday, …, 6=Saturday) | 0, 1, …, 6 |
%d | วันในเดือน (01-31) | 01, 02, …, 31 |
%b | ชื่อเดือน (short) | Jan, Feb, …, Dec |
%B | ชื่อเดือน (full) | January, February, …, December |
%m | รหัสเดือน (01-12) | 01, 02, …, 12 |
%y | ปี (short) | 00, 01, …, 99 |
%Y | ปี (full) | 0001, 0002, …, 2019, 2020, …, 9999 |
%H | ชั่วโมง (00-23) | 00, 01, …, 23 |
%I | ชั่วโมง (00-12) | 00, 01, …, 12 |
%p | AM/PM | AM, PM |
%M | นาที (00-59) | 00, 01, …, 59 |
%S | วินาที (00-59) | 00, 01, …, 59 |
%f | ไมโครวินาที (000000-999999) | 000000, 000001, …, 999999 |
%z | โซนเวลา | +HHMM or -HHMM |
%Z | ชื่อโซนเวลา | UTC, EST, CST |
%j | วันที่ในปี (001-366) | 001, 002, …, 365, 366 |
%U | สัปดาห์ในปี (00-53) คิดจากวันอาทิตย์เป็นวันเริ่มต้น | 00, 01, …, 52, 53 |
%W | สัปดาห์ในปี (00-53) คิดจากวันจันทร์เป็นวันเริ่มต้น | 00, 01, …, 52, 53 |
%c | วันและเวลา | Tue Aug 16 21:30:00 1988 |
%x | วันที่ (short) | 08/16/88, 08/16/1988 |
%X | เวลา (short) | 21:30:00 |
ตัวอย่าง
import datetime
# สร้างวันที่ในปัจจุบัน
now = datetime.datetime.now()
print("เวลาปัจจุบัน: ", now)
# สร้างวันที่จากวันที่กำหนด
dt = datetime.datetime(2021, 6, 23)
print("วันที่: ", dt)
# การปรับเปลี่ยนค่าวันที่
new_date = dt.replace(year=2022)
print("วันที่ใหม่: ", new_date)
# การแปลง string เป็น datetime
date_string = "June 23, 2021"
dt = datetime.datetime.strptime(date_string, "%B %d, %Y")
print("วันที่: ", dt)
ผลลัพธ์ที่ได้ คือ
เวลาปัจจุบัน: 2022-02-17 03:17:05.273745
วันที่: 2021-06-23 00:00:00
วันที่ใหม่: 2022-06-23 00:00:00
วันที่: 2021-06-23 00:00:00
ตัวอย่าง
import datetime
# กำหนดวันเวลาปัจจุบัน
now = datetime.datetime.now()
# แสดงวันที่และเวลาตามรูปแบบ 'YYYY-MM-DD HH:MM:SS'
print(now.strftime('%Y-%m-%d %H:%M:%S'))
# แสดงวันที่และเวลาตามรูปแบบ 'Month day, Year'
print(now.strftime('%B %d, %Y'))
# แสดงเวลาในรูปแบบ 'Hour:Minute:Second AM/PM'
print(now.strftime('%I:%M:%S %p'))
# แสดงวันที่และเวลาในรูปแบบ 'Weekday, Month day, Year Hour:Minute:Second AM/PM'
print(now.strftime('%A, %B %d, %Y %I:%M:%S %p'))
ผลลัพธ์ที่ได้ คือ
2022-02-16 11:09:22
February 16, 2022
11:09:22 AM
Wednesday, February 16, 2022 11:09:22 AM
ตัวอย่าง
from datetime import datetime
# วันที่เริ่มต้น
start_date = datetime(2022, 2, 1)
# วันที่สิ้นสุด
end_date = datetime(2022, 3, 1)
# คำนวณหาจำนวนวันที่มีอยู่ระหว่างวันที่
num_days = (end_date - start_date).days
# แสดงผลลัพธ์เป็นข้อความพร้อมกับฟอร์แมตต์ของวันที่และเวลา
print("วันที่เริ่มต้น: {}".format(start_date.strftime("%a %d/%m/%Y %H:%M:%S")))
print("วันที่สิ้นสุด: {}".format(end_date.strftime("%a %d/%m/%Y %H:%M:%S")))
print("จำนวนวันที่มีอยู่ระหว่างวันที่: {}".format(num_days))
ผลลัพธ์ที่ได้ คือ
วันที่เริ่มต้น: Tue 01/02/2022 00:00:00
วันที่สิ้นสุด: Tue 01/03/2022 00:00:00
จำนวนวันที่มีอยู่ระหว่างวันที่: 28