โมดูลวันเวลา (DateTime Module) ในภาษา Python

Datetime Module เป็นโมดูลของภาษา Python ที่มีไว้สำหรับจัดการเกี่ยวกับวันที่และเวลา โดยให้มีฟังก์ชั่นและคลาสต่างๆ ที่ช่วยให้ง่ายต่อการดึงค่าเกี่ยวกับเวลาและวันที่ออกมา เช่น การแปลงวันที่และเวลาไปมา การจัดการกับช่วงเวลา การทำงานกับเวลาที่เป็น timezone ต่างๆ และอื่นๆ อีกมากมาย

Datetime Module ประกอบด้วยคลาส datetime, date, time, timedelta และฟังก์ชั่นต่างๆ เช่น datetime.now(), datetime.strftime(), datetime.strptime() ซึ่งสามารถนำไปใช้งานในการจัดการเกี่ยวกับเวลาและวันที่ต่างๆ ได้หลากหลาย โดยฟังก์ชั่นและคลาสทั้งหมดใน Datetime Module มีการเข้าถึงง่ายและใช้งานได้ง่ายๆ โดยไม่ต้องเขียนโค้ดเยอะมาก

โดยทั่วไปแล้ว Datetime Module เป็นโมดูลที่ใช้งานได้แพร่หลายในการเขียนโปรแกรมที่เกี่ยวกับเวลาและวันที่ โดยไม่ว่าจะเป็นการพัฒนาแอปพลิเคชันเว็บ, ระบบเช็คอิน-เช็คเอ้าท์, ระบบจองโรงแรมหรือบัตรโดยสาร, ระบบการเงิน และอื่นๆ อีกมากมาย

โดย datetime มีฟังก์ชั่นหลักๆ ที่นิยมใช้ดังนี้

  1. datetime.date(year, month, day) ฟังก์ชันสำหรับสร้างวันที่ โดยรับค่าปี (year), เดือน (month), และวัน (day) แล้วสร้างวัตถุ date ขึ้นมา

  2. datetime.time(hour, minute, second, microsecond) ฟังก์ชันสำหรับสร้างเวลา โดยรับค่าชั่วโมง (hour), นาที (minute), วินาที (second) และไมโครวินาที (microsecond) แล้วสร้างวัตถุ time ขึ้นมา

  3. datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0) ฟังก์ชันสำหรับสร้างวันที่และเวลา โดยรับค่าปี (year), เดือน (month), วัน (day), ชั่วโมง (hour), นาที (minute), วินาที (second) และไมโครวินาที (microsecond) แล้วสร้างวัตถุ datetime ขึ้นมา

  4. 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