Cách xử lý ngày tháng và thời gian trong Python với datetime

Xử lý ngày tháng và thời gian là một nhiệm vụ phổ biến trong lập trình và Python cung cấp một mô-đun tích hợp có tên là datetime để làm việc với ngày tháng và thời gian. Mô-đun này cung cấp các lớp để thao tác ngày tháng, thời gian và khoảng thời gian, giúp thực hiện phép tính số học ngày tháng, định dạng ngày tháng và quản lý múi giờ dễ dàng hơn. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng mô-đun datetime để xử lý ngày tháng và thời gian hiệu quả trong Python.

Bắt đầu với datetime

Mô-đun datetime cung cấp một số lớp, chẳng hạn như datetime.date, datetime.time, datetime.datetime, datetime.timedeltadatetime.tzinfo. Các lớp này cho phép chúng ta làm việc với ngày tháng, thời gian và khoảng thời gian.

Để bắt đầu sử dụng mô-đun datetime, bạn cần nhập mô-đun này:

import datetime

Làm việc với Ngày tháng

Bạn có thể tạo đối tượng ngày tháng bằng cách sử dụng lớp date. Nó yêu cầu ba tham số: năm, tháng và ngày.

from datetime import date

# Create a date object
my_date = date(2023, 9, 4)
print(my_date)  # Output: 2023-09-04

Bạn cũng có thể truy cập vào từng thành phần riêng lẻ của ngày, chẳng hạn như năm, tháng và ngày:

print(my_date.year)   # Output: 2023
print(my_date.month)  # Output: 9
print(my_date.day)    # Output: 4

Làm việc với Times

Lớp time cho phép bạn tạo một đối tượng thời gian. Nó yêu cầu giờ, phút, giây và micro giây (tùy chọn).

from datetime import time

# Create a time object
my_time = time(14, 30, 45)
print(my_time)  # Output: 14:30:45

Tương tự như ngày tháng, bạn có thể truy cập vào từng thành phần riêng lẻ của đối tượng thời gian:

print(my_time.hour)   # Output: 14
print(my_time.minute) # Output: 30
print(my_time.second) # Output: 45

Kết hợp Ngày và Giờ với datetime

Lớp datetime kết hợp cả ngày và giờ thành một đối tượng duy nhất. Bạn có thể tạo đối tượng datetime bằng cách truyền năm, tháng, ngày, giờ, phút, giây và micro giây (tùy chọn).

from datetime import datetime

# Create a datetime object
my_datetime = datetime(2023, 9, 4, 14, 30, 45)
print(my_datetime)  # Output: 2023-09-04 14:30:45

Bạn có thể truy cập cả thành phần ngày và giờ của đối tượng datetime:

print(my_datetime.date())  # Output: 2023-09-04
print(my_datetime.time())  # Output: 14:30:45

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

Mô-đun datetime cung cấp các phương pháp thuận tiện để lấy ngày, giờ hiện tại hoặc cả hai:

# Current date
today = date.today()
print(today)  # Output: (current date)

# Current date and time
now = datetime.now()
print(now)  # Output: (current date and time)

Số học ngày tháng với timedelta

Lớp timedelta biểu diễn khoảng thời gian, là sự khác biệt giữa hai ngày hoặc thời gian. Nó cho phép bạn thực hiện phép tính ngày, chẳng hạn như thêm hoặc trừ ngày khỏi một ngày.

from datetime import timedelta

# Create a timedelta object
delta = timedelta(days=7)

# Add 7 days to the current date
future_date = today + delta
print(future_date)

Bạn cũng có thể tính toán sự khác biệt giữa hai ngày:

# Calculate the difference between two dates
date1 = date(2023, 9, 4)
date2 = date(2023, 9, 11)
difference = date2 - date1
print(difference.days)  # Output: 7

Định dạng Ngày và Giờ

Phương thức strftime() cho phép bạn định dạng ngày hoặc giờ thành chuỗi. Phương thức này lấy mã định dạng để chỉ định định dạng mong muốn:

# Format a date object
formatted_date = today.strftime('%B %d, %Y')
print(formatted_date)  # Output: September 04, 2023

Các mã định dạng phổ biến bao gồm:

  • %Y - Năm (ví dụ: 2023)
  • %m - Tháng dưới dạng số thập phân có đệm số 0 (ví dụ: 09)
  • %d - Ngày trong tháng dưới dạng số thập phân có đệm số 0 (ví dụ: 04)
  • %H - Giờ (đồng hồ 24 giờ) dưới dạng số thập phân có đệm số 0 (ví dụ: 14)
  • %M - Phút dưới dạng số thập phân có đệm số 0 (ví dụ: 30)
  • %S - Giây dưới dạng số thập phân có đệm số 0 (ví dụ: 45)

Phân tích ngày từ chuỗi

Phương thức strptime() cho phép bạn chuyển đổi một chuỗi thành đối tượng datetime, dựa trên định dạng của chuỗi ngày:

# Parse a date from a string
date_str = '2023-09-04'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
print(parsed_date)

Làm việc với Múi giờ

Mô-đun datetime hỗ trợ các đối tượng datetime nhận biết múi giờ bằng cách sử dụng thư viện pytz. Để làm việc với múi giờ, bạn cần cài đặt pytz:

pip install pytz

Sau đó, bạn có thể gán múi giờ cho đối tượng datetime:

from datetime import datetime
import pytz

# Set timezone to UTC
utc_zone = pytz.utc
now_utc = datetime.now(utc_zone)
print(now_utc)

Phần kết luận

Module datetime trong Python cung cấp các công cụ mạnh mẽ để xử lý ngày và giờ, bao gồm tạo, định dạng, phân tích cú pháp và thực hiện phép tính với các đối tượng ngày và giờ. Cho dù bạn cần thao tác ngày, làm việc với múi giờ hay định dạng ngày và giờ để hiển thị, module datetime đều đáp ứng được nhu cầu của bạn.