updated July 05, 2024181 views

Datetime là một module trong Python cung cấp các lớp và hàm để làm việc với các giá trị thời gian và ngày tháng. Được sử dụng để đại diện cho các giá trị ngày tháng và thời gian, module datetime cho phép người dùng thực hiện nhiều thao tác như tạo đối tượng ngày, chuyển đổi định dạng ngày, tạo đối tượng thời gian, thực hiện phép toán với ngày, tính toán khoảng cách thời gian giữa hai ngày, và nhiều thao tác khác. Module datetime cũng hỗ trợ tính toán với múi giờ và phân giây, cho phép người dùng làm việc với các giá trị thời gian và ngày tháng chính xác hơn.

Để xử lý ngày và giờ trong Python ta sử dụng một thư viên có tên datetime được tích hợp sẵn. Trước hết hãy kiểm tra xem trong thư viện này có gì nào!

import datetime
print(dir(datetime))

Kết quả ta được:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

Với việc sử dụng lệnh dir(), bạn có thể biết các hàm có sẵn trong một mô-đun nhất định. Như bạn thấy, trong mô-đun datetime có rất nhiều hàm, nhưng chúng ta sẽ tập trung vào date, datetime, timetimeelta.

datetime

from datetime import datetime
now = datetime.now()
print(now)                      # 2021-04-23 02:11:47.653202
day = now.day                   # 23
month = now.month               # 4
year = now.year                 # 2021
hour = now.hour                 # 2
minute = now.minute             # 11
second = now.second
timestamp = now.timestamp()
print(day, month, year, hour, minute)
print('timestamp', timestamp)
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 23/4/2021, 2:11

Timestamp hoặc Unix timestamp là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 theo giờ UTC.

strftime

  • Định dạng ngày tháng năm
from datetime import datetime
new_year = datetime(2021, 1, 1)
print(new_year)      # 2021-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 2021 0 0
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 1/1/2021, 0:0
  • Định dạng giờ phút giây
from datetime import datetime
# current date and time
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t) # time: 02:16:37
time_one = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("time one:", time_one) # time one: 04/23/2021, 02:16:37
time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("time two:", time_two) # time two: 23/04/2021, 02:16:37

String đến Time

from datetime import datetime
date_string = "5 December, 2021"
print("date_string =", date_string) # 5 December, 2021
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object) # 2021-12-05 00:00:00

date

  • Lấy ngày hiện tại bằng hàm today()
from datetime import date
d = date(2021, 1, 1)
print(d)
print('Current date:', d.today())    # 2021-01-01

# đối tượng ngày của ngày hôm nay
today = date.today()
print("Current year:", today.year)   # 2021
print("Current month:", today.month) # 4
print("Current day:", today.day)     # 23
  • Sử dụng các đối số trong hàm time()
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a) # 00:00:00
# time(hour, minute and second)
b = time(10, 30, 50)
print("b =", b) # 10:30:50
# time(hour, minute and second)
c = time(hour=10, minute=30, second=50)
print("c =", c) # 10:30:50
# time(hour, minute, second, microsecond)
d = time(10, 30, 50, 200555)
print("d =", d) # 10:30:50.200555
  • Sự khác nhau giữa hai thời điểm
today = date(year=2019, month=12, day=5)
new_year = date(year=2020, month=1, day=1)
time_left_for_newyear = new_year - today
# Time left for new year:  27 days, 0:00:00
print('Time left for new year: ', time_left_for_newyear)

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
# Time left for new year: 26 days, 23: 01: 00
print('Time left for new year:', diff)
  • Sự khác nhau giữa hai thời điểm khi sử dụng timedelta
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) # t3 = 86 days, 22:56:50

Bài tập

  1. Lấy ngày, tháng, năm, giờ, phút và gian hiện tại từ mô-đun datetime.
  2. Định dạng ngày hiện tại bằng định dạng này: "% m /% d /% Y,% H:% M:% S"
  3. Hôm nay là 5 December, 2021. Thay đổi chuỗi này thành thời gian.
  4. Tính chênh lệch múi giờ giữa bây giờ và năm mới.
  5. Tính chênh lệch thời gian giữa 1 January 1970 và bây giờ.
  6. Hãy nghĩ xem, bạn có thể sử dụng mô-đun datetime để làm gì? Ví dụ: Phân tích chuỗi thời gian? Để lấy móc thời gian bất kỳ của hoạt động nào trong ứng dụng? Thêm thời gian vào bài đăng trên blog?