Date và Time trong Python

Mô-đun Python datetime cung cấp các công cụ mạnh mẽ để làm việc với ngày tháng, thời gian và khoảng thời gian, bao gồm cả định dạng và thao tác.
seopro

Bạn có thể dễ dàng gọi được ngày giờ hiện tại của hệ thống trong Python. Bài này ptdulieu sẽ giới thiệu một số phương thức phổ biến để làm việc với Date và Time trong Python.

Table of Contents

Ngày giờ Python

Python có một mô-đun có tên là datetime để làm việc với ngày và giờ. 

Nó cung cấp nhiều lớp khác nhau để biểu diễn và xử lý ngày tháng và thời gian, cũng như để định dạng và phân tích ngày tháng và thời gian theo nhiều định dạng khác nhau

Các lớp thường được sử dụng trong mô-đun (module) datetime là:

  • date – Chỉ thao tác ngày (Tháng, ngày, năm).
  • time – Thời gian không phụ thuộc vào ngày (Giờ, phút, giây, micro giây).
  • datetime - Kết hợp thời gian và ngày (Tháng, ngày, năm, giờ, giây, micro giây).
  • timedelta— Khoảng thời gian được sử dụng để thao tác ngày tháng.
  • tzinfo— Một lớp trừu tượng để xử lý các múi giờ.

Để sử dụng các kiểu dữ liệu thời gian trong ptyhon này, bạn cần phải import các thư viện thời gian đó vào chương trình python.

Module Datetime trong python

Tạo ngày

Để khởi tạo một đối tượng datetime bạn cũng sẽ phải truyền giá trị cho nó nhé, trong đó, ngày, tháng và năm là bắt buộc.

hàm date() yêu cầu 3 đối số một năm (4 chữ số), một tháng (1-2 chữ số) và một ngày(1-2 chữ số).

Cú pháp

date(yyyy, mm, dd)
# cách 1
from datetime import date
women_day = date(2025, 3, 8)
print(women_day)

#kết quả: 2025-03-08

# cách 2
import datetime as dt
valentine = dt.date(2025, 2, 14)
print(valentine)

#kết quả: 2025-02-14

Tạo thời gian

Từ datetime, chúng ta chỉ cần nhập phần thời gian. 

Có 3 phần bắt buộc trong thời gian: một giờ, một phút, một giây và một phần tùy chọn - micro giây (sáu chữ số).

Cú pháp

time(hour, minute, second, microsecond)
from datetime import time
#time (hour = 0, minute = 0 , second = 0)
midnight = time()
print('midnight:', midnight)

#kết quả: midnight: 00:00:00

from datetime import time
#time (hour, minute, sencond)
lunchtime = time(11, 45, 15)
print('lunchtime:' , lunchtime)

#kết quả: lunchtime: 11:45:15

from datetime import time
#time (hour, minute, second, microsecond)
exact_time = time(11, 45, 15, 159753)
print('exact:', exact_time)

#kết quả: exact_time: 11:45:15.159753

Tạo ngày giờ

Trong trường hợp tạo datetime(), 3 đối số đầu tiên là bắt buộc: năm (4 chữ số). tháng (1-2 chữ số), và ngày(1-2 chữ số)

Các thành phần thời gian bao gồm giờ(1-2 chữ số), phút (1-2 chữ số), giây(1-2 chữ số), và micro giây(6 chữ số) là tùy chọn.

#văn bản ngắn
#datetime(year, month, day)
from datetime import datetime
worldcup = datetime(2026, 6, 11)
print('worldcup 2026:', worldcup)

#kết quả: worldcup 2026: 2026-06-11 00:00:00

#văn bản dài
#datetime(year, month, day,
hour, minute, second, [microsecond])
import datetime as ds
earthday = ds.datetime(2026, 4, 22, 20, 15, 0)
print('Earthday 2026:', earthday)

#kết quả: Earthday 2026: 2026-04-22 20:15:00

Lấy ngày giờ hiện tại

Để lấy ngày hiện tại, ta sử dụng phương thức today() đối tượng của date [date.today()]

import datetime as dt
#lấy ngày hiện tại
deadline = dt.date.today()
print('ngay hien tai:', deadline)

#kết quả: ngay hien tai: 2025-03-03

import datetime
Ngay_hien_tai = datetime.date.today()
print("Ngay hien tai la:", Ngay_hien_tai)

#kết quả: Ngay hien tai la: 2025-03-03

# importing date module
from datetime import date

today = date.today()
print("Today's date:", today)

#kết quả: Today's date: 2025-03-03

Để lấy ngày và giờ hiện tại, ta sử dụng phương thức now() của đối tượng datetime [datetime.now()]

import datetime as dt
what_time = dt.datetime.now()
print('what time:', what_time)

#kết quả: what time: 2025-03-03 09:34:35.342182

import datetime
Ngay_Gio_hien_tai = datetime.datetime.now()
print("Ngay gio hien tai la:", Ngay_Gio_hien_tai)

#kết quả: Ngay gio hien tai la: 2025-03-03 09:35:36.318690

Để lấy thời gian hiên tại, ta sử dụng phương thức time() trên datetime.now()

import datetime as dt
what_time = dt.datetime.now()
print('what time:', what_time)
#chỉ lấy thời gian hiện tại
exact_time= what_time.time()
print('exact_time:', exact_time)

#kết quả: 
what time: 2025-03-03 09:42:39.550310
exact_time: 09:42:39.550310

Chuyển đổi giữa ngày và giờ

Với các đối tượng datetime có sẵn, chúng ta có thể dễ dàng trích xuất ngày từ các đối tượng bằng cách sử dụng phương thức date(). Kết quả chỉ chứa phần ngày bao gồm năm, tháng và ngày.

Tuy nhiên, chúng ta không thể tạo đối tượng ngày trực tiếp từ đối tượng datetime. Thay vào đó, chúng ta phải kết hợp phần ngày và phần giờ lại với nhau thành toàn bộ đối tượng datetime bằng cách sử dụng phương thức combine() của mô-đun datetime.

#chuyển đổi datetime sang date
import datetime as dt
earthday = dt.datetime(2025, 3, 3 , 10, 4, 50)
earth_day = earthday.date()
print(earth_day)

#kết quả: 2025-03-03

#chuyển đổi date sang datetime
import datetime as dt
women_day = dt.date(2026, 3 , 8)
women_time = dt.time(17, 30, 00)
gift_time = dt.datetime.combine(women_day, women_time)
print(gift_time)

#kết quả: 2026-03-08 17:30:00

Chuyển đổi giữa chuỗi và ngày và ngược lại

Sử dụng phương thức strptime() để chuyển đổi chuỗi thành ngày(giờ)

Cú pháp

datetime.strptime(string, format)
#phương thức strptime()
from datetime import datetime
teacherday_str = '20 November, 2026'
print('date_string =', teacherday_str)

#kết quả: date_string = 20 November, 2026

from datetime import datetime
teacherday_str = '20 November, 2026'
print('date_string =', teacherday_str)

teacherday_str = datetime.strptime(teacherday_str, "%d %B, %Y")
print('date_object =', teacherday_str)

#kết quả: 
date_string = 20 November, 2026
date_object = 2026-11-20 00:00:00

Sử dụng phương thức strftime() để chuyển đổi ngày(giờ) thành chuỗi

Cú pháp

time.strftime(format, t)
#phương thức strftime()
from datetime import date
labor_date = date(2026, 5, 1)
print(labor_date)

#kết quả: 2026-05-01

from datetime import date
labor_date = date(2026, 5, 1)
print(labor_date)

labor_str = labor_date.strftime ("%d/%m/%y")
print('data_string:', labor_str)

#kết quả:
2026-05-01
data_string: 01/05/26

Định dạng code

Định dạng code Ý nghĩa Ví dụ
%a Viết tắt tên ngày trong tuần. Sun, Mon, ...
%A Tên đầy đủ các ngày trong tuần. Sunday, Monday, ...
%w Ngày trong tuần dưới dạng số thập phân. 0, 1, ..., 6
%d Ngày trong tháng dưới dạng số thập phân không đệm. 01, 02, ..., 31
%-d Ngày trong tháng dưới dạng số thập phân. 1, 2, ..., 30
%b Tên tháng được viết tắt. Jan, Feb, ..., Dec
%B Tên tháng đầy đủ. January, February, ...
%m Tháng dưới dạng số thập phân có phần đệm là 0. 01, 02, ..., 12
%-m Tháng dưới dạng số thập phân. 1, 2, ..., 12
%y Năm không có thể kỷ được viết dưới dạng số thập phân có phần đệm là 0. 00, 01, ..., 99
%-y Năm không có thế kỷ được viết dưới dạng số thập phân. 0, 1, ..., 99
%Y Năm có thế kỷ dưới dạng số thập phân. 2013, 2019 etc.
%H Viết giờ dưới dạng số thập phân bắt đầu bằng 0. 00, 01, ..., 23
%-H Giờ dưới dạng số thập phân. 0, 1, ..., 23
%I Giờ dưới dạng số thập phân bắt đầu bằng 0. 01, 02, ..., 12
%-I Giờ dưới dạng số thập phân. 1, 2, ... 12
%p AM hoặc PM theo ngôn ngữ. AM, PM
%M Phút dưới dạng số thập phân bắt đầu bằng 0. 00, 01, ..., 59
%-M Phút dưới dạng số thập phân. 0, 1, ..., 59
%S Giây dưới dạng số thập phân bắt đầu bằng 0. 00, 01, ..., 59
%-S Giây dưới dạng số thập phân. 0, 1, ..., 59
%f micro giây dưới dạng số thập phân, số 0 được đệm ở bên trái. 000000 - 999999
%z UTC offset ở dạng +HHMM hoặc -HHMM.  
%Z Tên múi giờ.  
%j Ngày trong năm dưới dạng số thập phân có phần đầu là 0. 001, 002, ..., 366
%-j Ngày trong năm dưới dạng số thập phân. 1, 2, ..., 366
%U Số tuần trong năm (Ngày đầu tiên là Chủ Nhật) 00, 01, ..., 53
%W Số tuần trong năm 00, 01, ..., 53
%c Biểu thị ngày và giờ theo ngôn ngữ. Mon Sep 30 07:06:05 2013
%x Biểu thị ngày tháng tương ứng theo ngôn ngữ. 09/30/13
%X Biểu thị thời gian phù hợp theo ngôn ngữ. 07:06:05
%% Ký tự theo nghĩa đen. %

Timedelta của Python

Hai kiểu dữ liệu quan trọng nhất và thường được sử dụng nhất từ datetime mô-đun là timedelta và datetime. Trong khi datetime các đối tượng biểu diễn các điểm thời gian cụ thể (ví dụ: ngày 1 tháng 1 năm 2026 lúc 10:30 sáng), timedelta các đối tượng biểu diễn khoảng thời gian hoặc khoảng cách giữa hai điểm. Hãy nghĩ về nó như sự khác biệt giữa việc hỏi "Khi nào?" (datetime) và "Bao lâu?" (timedelta).

Đối tượng Timedelta phản ảnh sự khác biệt giữa 2 đối tượng datetime (2 ngày, 2 giờ), ta chỉ cần áp dụng dấu trừ '-' giữa 2 đối tượng datetime để có được timedelta.

from datetime import datetime, date
date1 = date(year = 2025, month = 2, day = 14)
date2 = date(year = 2024, month = 10, day = 10)
delta1 = date1 - date2
print('delta1:' , delta1)

#kết quả: delta1: 127 days, 0:00:00

from datetime import datetime, date
time1 = datetime(year = 2025, month = 3, day = 13, hour = 10, minute = 15, second = 12)
time2 = datetime(year = 2025, month = 3, day = 3, hour = 8, minute = 5, second = 7 )
delta2 = time1 - time2
print('delta2:', delta2)

#kết quả: delta2: 10 days, 2:10:05

Cộng trừ hai Timedelta

Các đối tượng Timedelta cũng cho phép tự thêm hoặc bớt 2 Timedelta. Ta chỉ cần áp dụng dấu cộng/trừ '+'/"-" giữa 2 đối tượng Timedelta để có được một Timedelta khác.

from datetime import timedelta
delta1 = timedelta(weeks = 3, days = 15, hours = 10, minutes = 45)
delta2 = timedelta(days = 27, hours = 11, minutes = 15, seconds = 14)
delta3 = delta1 - delta2
print('subtract:', delta3)

#kết quả: subtract: 8 days, 23:29:46

from datetime import timedelta
delta1 = timedelta(weeks = 3, days = 15, hours = 10, minutes = 45)
delta2 = timedelta(days = 27, hours = 11, minutes = 15, seconds = 14)
delta3 = delta1 + delta2
print('add:', delta3)

#kết quả: add: 63 days, 22:00:14

Tính toán một ngày trong tương lai

Để tính một ngày trong tương lai, hãy thêm timedelta vào ngày hiện tại.

from datetime import datetime, timedelta
# Current date
current_date = datetime.now()
# Add 10 days to the current date
future_date = current_date + timedelta(days=10)
print("Date in the future:", future_date)

#kết quả: Date in the future: 2025-03-13 12:38:46.164431

Tính toán một ngày trong quá khứ

Để tìm một ngày trong quá khứ, hãy trừ một khoảng thời gian delta khỏi ngày hiện tại.

from datetime import datetime, timedelta

# Current date
current_date = datetime.now()

# Subtract 30 days from the current date
past_date = current_date - timedelta(days=30)
print("Date in the past:", past_date)

#kết quả: Date in the past: 2025-02-01 12:48:01.131080

Bài viết trên đây đã chia sẽ về định dạng ngày và giờ trong Python (Date và Time trong Python) bằng cách sử dụng mô-đun datetime. Chúng ta cũng đã học cách định dạng ngày bằng cách chuyển đổi nó thành chuỗi và sau đó chuyển đổi lại thành ngày. Ngoài ra lớp Timedelta cung cấp các phương pháp đơn giản để xử lý các khoảng thời gian, giúp làm việc với các khoảng thời gian theo nhiều đơn vị khác nhau dễ dàng hơn.

Đăng nhận xét