Xử lý ngày tháng trong Python
Bài viết này giải thích về cách xử lý ngày tháng trong Python.
YouTube Video
Xử lý ngày tháng trong Python
Xử lý ngày tháng trong Python chủ yếu sử dụng module datetime
. Module này cung cấp nhiều lớp và hàm khác nhau để xử lý ngày và giờ.
Dưới đây là một số ví dụ cơ bản về cách xử lý ngày tháng bằng module datetime
.
Lấy ngày và giờ
Bạn có thể lấy ngày và giờ hiện tại như sau. datetime.now()
và datetime.today()
trả về kết quả gần như giống nhau, nhưng có thể có sự khác biệt về cách chúng xử lý múi giờ.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- Đoạn mã này lấy và hiển thị ngày giờ hiện tại, cũng như chỉ ngày hôm nay.
Tạo ngày và giờ cụ thể
Bạn có thể tạo một ngày và giờ cụ thể như sau.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- Đoạn mã này tạo và hiển thị ngày giờ đã chỉ định (ngày 7 tháng 11 năm 2023, 10:30:45).
Định dạng ngày tháng
Định dạng ngày tháng có thể được thực hiện như sau.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- Đoạn mã này lấy ngày giờ hiện tại, định dạng nó theo định dạng chỉ định sử dụng
strftime
, và hiển thị kết quả.
Chuỗi định dạng ngày tháng
%Y
: Năm (4 chữ số)%m
: Tháng (01 đến 12)%d
: Ngày (01 đến 31)%H
: Giờ (00 đến 23)%M
: Phút (00 đến 59)%S
: Giây (00 đến 59)
Phân tích chuỗi ngày tháng
Bạn có thể chuyển một chuỗi biểu diễn ngày tháng thành đối tượng datetime
.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- Đoạn mã này chuyển một ngày tháng dưới dạng chuỗi thành đối tượng
datetime
bằng cách sử dụngstrptime()
và hiển thị nó.
Phép tính với ngày tháng
Có thể thực hiện các phép toán ngày tháng như sau.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- Đoạn mã này sử dụng
timedelta
để cộng hoặc trừ ngày và giờ từ ngày giờ hiện tại, tính toán và hiển thị ngày giờ cho ngày mai, một tuần trước và hai giờ sau.
Xử lý múi giờ
Bạn cũng có thể xử lý múi giờ với mô-đun datetime
.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
datetime
trả về một 'naive datetime' (không có thông tin múi giờ) theo mặc định. Bạn có thể xử lý múi giờ một cách rõ ràng bằng cách sử dụng lớptimezone
hoặczoneinfo
.
Lớp date và lớp time
Với mô-đun datetime
, bạn cũng có thể xử lý chỉ ngày hoặc chỉ giờ.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
- Lớp
date
chỉ xử lý ngày, và lớptime
chỉ xử lý giờ.
Chuyển đổi giữa datetime
và timestamp
Có thể chuyển đổi giữa UNIX timestamp và đối tượng datetime
. Ở đây, UNIX timestamp đề cập đến số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- Đoạn mã này chuyển ngày giờ hiện tại thành UNIX timestamp, sau đó sử dụng hàm
fromtimestamp()
để chuyển đổi timestamp đó ngược lại thành đối tượngdatetime
.
Các lỗi phổ biến
Khi sử dụng mô-đun datetime
, bạn nên lưu ý những điểm sau.
datetime.now()
không tính đến múi giờ, vì vậy để hỗ trợ quốc tế hóa, bạn cần sử dụng rõ ràngtimezone.utc
.- Hãy cẩn thận không nhầm lẫn giữa
%m
(tháng) và%M
(phút) trong các chuỗi định dạng.
Tóm tắt
Module datetime
cũng cung cấp nhiều tính năng khác để xử lý ngày và giờ linh hoạt. Ngoài ra, còn có các lớp như date
, time
, và timedelta
, chuyên dụng cho các thao tác cụ thể.
Sử dụng các thư viện khác cũng cho phép xử lý ngày tháng ở mức độ cao hơn. Ví dụ, pandas
chuyên xử lý dữ liệu chuỗi thời gian, trong khi dateutil
phù hợp để phân tích ngày tháng phức tạp. Ngoài ra, thư viện arrow
cũng rất hữu ích.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.