1. Tổng quan module datetime trong Python

Python không tồn tại một kiểu dữ liệu cho định dạng thời gian. Thế nhưng chúng ta có thể nhập một mô-đun có tên datetime để làm việc với ngày tháng dưới dạng các đối tượng thời gian.

Mudule datetime trong Python được tạo ra để làm việc và xử lý ngày giờ cùng các mốc thời gian trong một chương trình. Các thao tác xử lý thời gian có trong module datetime này có thể là tạo thời gian, thêm thời gian, sửa thời gian….

Để nhập một module datetime vào trong chương trình cần sử dụng, khi đó ta sẽ sử dụng cú pháp sau:

import datetime

Các lớp thường được sử dụng trong module datetime là:

  • Class date
  • Class time
  • Class datetime
  • Class timedelta

2. Sử dụng module datetime trong Python

2.1 Lấy ra thời gian hiện tại trong Python

Để lấy ra thời gian hiện tại của hệ thống, khi đó ta cần sử dụng đển phương thức now() trong module datetime. Định dạng thời gian trả về sẽ là năm-tháng-ngày giờ-phút-giây như bên dưới:

# Nhap module datetime vao chuong trinh
import datetime

# Lay ra thoi gian hien tai 
x = datetime.datetime.now()
print(x)

Kết quả:

2022-03-13 12:01:56.333474

2.2 Lấy ra mốc thời gian cụ thể trong Python

Ta có thể lấy ra, ngày hoặc tháng hoặc năm thậm chí là thứ mấy trong tuần thông qua module datetime. Ví dụ dưới đây, lấy ra năm và thứ mấy trong tuần:

import datetime

# Lay ra thoi gian hien tai
x = datetime.datetime.now()

# Hien thi nam
print(x.year)
#print(x.month)
#print(x.day)
# Hien thi thu trong tuan
print(x.strftime("%A"))

Kết quả:

2022
Sunday

2.3 Tạo khoảng thời gian trong Python

Có thể sử dụng module datetime để khởi tạo một mốc thời gian cụ thể trong chương trình. Khi đó ta sẽ sử dụng lớp datetime() – lớp này yêu cầu ba tham số để tạo một mốc thời gian đó là: năm, tháng, ngày.

Ví dụ tạo một mốc thời gian cụ thế có năm là 2022, tháng là 3, ngày là 13 bằng cách sử dụng lớp datetime() như sau:

import datetime

# Khai bao bien nam, thang, ngay
nam = 2022
thang = 3
ngay = 13

# Tao thoi gian tu nam, thang, ngay
x = datetime.datetime(nam, thang, ngay)

# Hien thi thoi gian vua tao
print(x)

Kết quả:

2022-03-13 00:00:00

3. Định dạng thời gian trong Python

Mặc định khi sử dụng module datetime thì một thời gian trả về sẽ theo định dạng năm-tháng-ngày. Tuy nhiên, đối với chúng ta lại quen thuộc hơn với định dạng ngày-tháng-năm và khi đó để có được định này này, ta cần định dạng thời gian. Trong Python có các phương thức strftime() và strptime() để xử lý việc này.

3.1 Phương thức strftime()

Phương thức strftime() được sử dụng để định dạng thời gian thành một string. Ví dụ dưới đây định dạng ngày tháng sử dụng strftime() ngày tháng trả về sẽ theo định dạng ngày-tháng-năm như sau:

import datetime 

# Lay ra thoi gian hien tai
now  = datetime.datetime.now()

t = now.strftime("%H:%M:%S")
print("time:", t)

# Dinh dang thoi gian theo nam/thang/ngay gio/phut/giay
t1 = now.strftime("%Y/%m/%d, %H:%M:%S")

# Hien thi thoi gian t1
print("t1:", t1)

# Dinh dang thoi gian theo ngay/thang/nam gio/phut/giay
t2 = now.strftime("%d/%m/%Y, %H:%M:%S")

# Hien thi thoi gian t2
print("t2:", t2)

Kết quả:

time: 12:47:26
t1: 2022/03/13, 12:47:26
t2: 13/03/2022, 12:47:26

3.2 Phương thức strptime()

Phương thức strptime() được sử dụng để phân tích một string thành thời gian. Ví dụ dưới đây sử dụng phương thức strptime() để phân tích chuỗi “13 March, 2022” thành một đối tượng thời gian cụ thể như sau:

import datetime

# Chuoi ky tu can phan tich thanh thoi gian
date_string = "13 March, 2022"

#Hien thi chuoi ky tu ban dau
print("Chuoi ky tu ban dau: ", date_string)

# Phan tich chuoi ky tu tren thanh doi tuong thoi gian
date_object = datetime.datetime.strptime(date_string, "%d %B, %Y")

# Hien thi thoi gian
print("Thoi gian tuong ung: ", date_object)

Kết quả:

Chuoi ky tu ban dau: 13 March, 2022
Thoi gian tuong ung: 2022-03-13 00:00:00

4. Hiển thị múi giờ trong Python

Trong một số trường hợp khi sử lý thời gian, chúng ta cần hiển thị thời gian theo múi giờ cho khu vực của mình. Để làm việc này trong Python ta cần sử dụng kết hợp module datetime để thao tác với thời gian và module pytZ để lấy ra múi giờ theo khu vực.

Vì module pytZ là không có sẵn trong Python, vì vậy bạn cần phải cài đặt module này từ pip bằng cách mở CMD và gõ theo câu lệnh sau:

pip install pytZ

Ví dụ đơn giản dưới đây, sẽ lấy ra thời gian dựa theo múi giờ của khu vực Asia/Ho_Chi_Minh bằng cách sử dụng kết hợp module datetime để thao tác với thời gian và module pytZ để lấy ra múi giờ theo khu vực.

import datetime
import pytz

# Lay ra thoi gian hien tai
now = datetime.datetime.now()
print("Thoi gian hien tai:", now.strftime("%m/%d/%Y, %H:%M:%S"))

# Lay ra thoi gian theo mui gio cua Asia/Ho_Chi_Minh
tz_NY = pytz.timezone('Asia/Ho_Chi_Minh')
datetime_NY = datetime.datetime.now(tz_NY)
print("Thoi gian theo mui gio Asia/Ho_Chi_Minh:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S"))

Kết quả:

Thoi gian hien tai: 03/13/2022, 13:07:59
Thoi gian theo mui gio Asia/Ho_Chi_Minh: 03/13/2022, 13:07:59