Notes & software courses · Free to learn
Aph's Blog
On this page

วันที่ 16 — วันที่และเวลา (Python DateTime)

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

เรียนรู้การจัดการวันที่และเวลาใน Python ด้วย datetime module ตั้งแต่การดึงข้อมูลวันเวลา การ format ด้วย strftime จนถึง timedelta

Python datetime

Python มี module ชื่อ datetime สำหรับจัดการวันที่และเวลา

การดึงข้อมูล datetime

python
from datetime import datetime
now = datetime.now()
print(now)                      # 2021-07-08 07:34:46.549883
day = now.day                   # 8
month = now.month               # 7
year = now.year                 # 2021
hour = now.hour                 # 7
minute = now.minute             # 38
second = now.second
timestamp = now.timestamp()
print(day, month, year, hour, minute)
print('timestamp', timestamp)
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 8/7/2021, 7:38

การ Format วันที่ด้วย strftime

strftime ใช้ format เวลาเป็น string ที่อ่านง่าย:

python
from datetime import datetime
new_year = datetime(2020, 1, 1)
print(new_year)          # 2020-01-01 00:00:00
day = new_year.day
month = new_year.month
year = new_year.year
hour = new_year.hour
minute = new_year.minute
second = new_year.second
print(day, month, year, hour, minute) # 1 1 2020 0 0
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 1/1/2020, 0:0

การ format ด้วย format strings ต่าง ๆ:

python
from datetime import datetime
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t)
time_one = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("time one:", time_one)
time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("time two:", time_two)
strftime formatting symbols
strftime symbols สำหรับ format วันเวลาใน Python

การแปลง String เป็น Datetime ด้วย strptime

strptime ใช้แปลง string เป็น datetime object:

python
from datetime import datetime
date_string = "5 December, 2019"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)

การใช้ date จาก datetime

python
from datetime import date
d = date(2020, 1, 1)
print(d)
print('Current date:', d.today())    # 2019-12-05
# date object of today
today = date.today()
print("Current year:", today.year)   # 2019
print("Current month:", today.month) # 12
print("Current day:", today.day)     # 5

Time Object เพื่อแสดงเวลา

python
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time(10, 30, 50)
print(a)
print('hour:', a.hour)     # 10
print('minute:', a.minute) # 30
print('second:', a.second) # 50

ความแตกต่างระหว่างสองช่วงเวลาด้วย timedelta

python
from datetime import date, timedelta
today = date(year=2019, month=12, day=5)
new_year = date(year=2020, month=1, day=1)
time_left_for_new_year = new_year - today
print('Time left for new year: ', time_left_for_new_year) # 27 days, 0:00:00
print('Time left for new year: ', time_left_for_new_year.days) # 27
python
from datetime import datetime
t1 = datetime(year = 2019, month = 12, day = 5, hour = 0, minute = 59, second = 0)
t2 = datetime(year = 2020, month = 1, day = 1, hour = 0, minute = 0, second = 0)
diff = t2 - t1
print('Time left for new year:', diff) # 26 days, 23: 01: 00
python
from datetime import timedelta
t1 = timedelta(weeks=12, days=10, hours=4, seconds=20)
t2 = timedelta(days=7, hours=5, minutes=3, seconds=30)
t3 = t1 - t2
print("t3 =", t3)  # 88 days, 22:56:50

💻 แบบฝึกหัด — วันที่ 16

  1. ดึง year, month, weekday, hour, minute และ timestamp จาก datetime module ของเวลาปัจจุบัน
  2. Format วันที่ปัจจุบันในรูปแบบ "%m/%d/%Y, %H:%M:%S"
  3. วันนี้เป็น 5 ธันวาคม 2019 เปลี่ยน string เวลานี้เป็น time format
  4. คำนวณความต่างระหว่างเวลาปัจจุบันกับปีใหม่
  5. คำนวณความต่างระหว่าง 1 มกราคม 1970 กับวันนี้
  6. คิดว่าทำอะไรกับ datetime module ได้บ้าง ลองค้นหา example เพิ่มเติม